HTTP 메서드
메서드의 종류
HTTP 메서드란 클라이언트와 서버 사이에 이루어지는 요청(Request)와 응답(Respnse) 데이터를 전송하는 방식을 일컫는다. 다시 말해 서버가 수행해야 할 동작을 지정 하는 요청을 보내는 방법이다.
HTTP 메서드 - GET
- 리소스 조회 메서드 (Read)
- 만일 서버에 전달하고 싶은 데이터는 쿼리 스트링을 통해서 전달
- 쿼리스트링 외에 메시지 바디를 사용해서 데이터를 전달 할 수 있으나, 서버에서 따로 구성해야 되기 때문에 지원하지 않는 곳이 많아 권장하지 않음
- 조회할 때
POST도 사용할 수 있지만, GET 메서드는 캐싱이 가능해 GET을 사용하는 것이 유리하다.
쿼리 스트링
쿼리 스트링은 웹 요청에서 URL 의 끝에 위치한 일련의 매개변수다. <키-값> 쌍으로 구성되어 있다.
이는 클라이언트가 서버로 데이터를 전달하는데 사용된다. 쿼리스트링은 '?'로 시작하며, 각각의 매개변수는
'&'으로 구분된다.
https://example.com/search?q=keyword&page=2
이 경우 '?' 이후의 부분이 쿼리 스트링이다.
'q=keyword' 와 'page = 2'는 두 개의 쿼리 매개변수다.
여기서 'q'와 'page' 는 각각 매개변수의 이름, 'keyword' 와 '2'는 각각의 값이다.
쿼리스트링은 주로 검색 엔진에서 검색어를 전달하거나, 페이지 번호, 필터, 정렬 등의 사용자 입력을
서버로 전송하는 데 사용된다.
정적 데이터 조회 과정
- 이미지, 정적 텍스트 문서
GET
- 쿼리 파라미터 없이 리소스 경로로 단순하게 조회 가능
예시 코드
GET/members/100
- 클라이언트에서 /members/100 으로 100번 멤버를 조회해서 정보를 달라고
GET 요청
- 서버에서는 요청 메세지를 분석해 내부의 유저정보를 조회한 뒤 결과
Response를 생성
- 서버에서 클라이언트로 응답, 클라이언트에서 정상적으로 받으면 '200 OK status'를 가지고, 회원정보를 얻게 됨
HTTP 메서드 - POST
- 전달한 데이터 처리/생성 요청 메서드 (Create)
- 메시지 바디(body)를 통해 서버로 요청 데이터 전달하면 서버는 요청 데이터를 처리하여 업데이트
- 전달된 데이터로 신규 리소스 등록, 프로세스 처리에 사용
- 만일 데이터를 GET 하는데 있어, JSON으로 조회 데이터를 넘겨야 하는 경우
POST 사용
JSON 데이터 전송 과정
- 클라이언트는 body에 등록할 회원 정보를 JSON 형태로 만들어 담고 서버로 전송한다.
POST/members HTTP/1.1
Content-Type : application/json
{
"username" : 'young',
"age" : 20
}
- 서버에서는 받은 메시지를 분석해 로직 대로 처리 , 데이터베이스에 등록하고 신규 아이디 생성
- 신규회원에 대한 데이터를 바디에 담아서 클라이언트로
Response
HTTP/1.1 201 Created... // 신규 자원 생성은 200 OR 201로 응답
...
Location : /members/100 // Location은 자원이 신규로 생성된 URL 경로를 의미
HTTP 메서드 - PUT
- 리소스를 대체하는 매서드 (Update)
- 만일 요청 메세지에 리소스가 있으면 덮어쓰고, 없으면 새로 생성한다
/members/100 데이터 존재 --> 기존의 것 대체
/members/100 데이터 X --> 새로 생성
- 데이터를 대체하기 위해 클라이언트가 리소스의 구체적인 전체 경로를 지정해야함
POST/members : 멤버 새로 추가
PUT / members / 100
HTTP 메서드 - PATCH
- 리소스 일부 부분을 변경하는 메소드(Update)
- 만일
PATCH를 지원하지 않는 서버에서는 대신에 POST를 사용할 수 있다.
PATCH 예시
- age 만 50으로 변경하려고 해당 데이터를
PATCH로 전달함
PATCH / memners/100 HTTP/1.1
Content-Type : application/json
{
"age": 50
}
PUT과 다르게 회원정보에서 age만 변경된다.
HTTP 메서드 - DELETE
- 리소스 제거하는 메소드(Delete)
- 상태코드는 대부분 200을 사용하고 상황에 따라 204를 사용한다.
DELETE 예시
- 100번째 멤버를 제거하기 위해
DELETE로 전달함
DELETE /members/100 HTTP/1.1
...
- 서버에서 요청을 받고 데이터베이스의 해당 리소스를 제거한다.
참고
https://inpa.tistory.com/entry/WEB-%F0%9F%8C%90-HTTP-%EB%A9%94%EC%84%9C%EB%93%9C-%EC%A2%85%EB%A5%98-%ED%86%B5%EC%8B%A0-%EA%B3%BC%EC%A0%95-%F0%9F%92%AF-%EC%B4%9D%EC%A0%95%EB%A6%AC