Search
Duplicate

HTTP 메서드

태그
HTTP 메서드
2 more properties

주요 메서드 종류

GET
representation 을 조회합니다.
POST
요청 데이터 처리, 주로 등록에 사용합니다.
PUT
representation 을 대체하며, 해당 representation 가 존재하지 않는 경우에는 생성합니다.
PATCH
representation 을 부분 변경합니다.
DELETE
representation 을 삭제합니다.

기타 메서드 종류

HEAD
GET 과 동일하지만 메세지 부분을 제외하고, 상태 줄과 헤더만 반환합니다.
OPTIONS
대상 representation 에 대한 통신 가능 옵션(메서드) 를 설명합니다. (주로 CORS 에서 사용)
CONNECT
대상 자원으로 식별되는 서버에 대한 터널을 설정합니다.
TRACE
대상 representation 에 대한 경로를 따라 메세지 루프백 테스트를 수행합니다.

GET

representation 조회에 사용합니다.
서버에 전달하고 싶은 데이터는 query 를 통해서 전달합니다.
메세지 바디를 사용해서 데이터를 전달할 수 있지만, 지원하지 않는 곳이 많아서 권장하지 않습니다.

POST

요청 데이터를 처리합니다.
클라이언트가 메세지 바디를 통해 서버로 요청 데이터를 전달하면, 서버는 요청 데이터를 처리합니다. 즉, 메세지 바디를 통해 들어온 데이터를 처리하는 모든 기능을 수행합니다. 주로 신규 representation 을 등록하거나 프로세스 처리에 사용합니다.
정리하면 POST 는 다음에 사용합니다.
새 리소스 생성(등록)
서버가 아직 식별하지 않은 새 리소스를 생성할 때에 사용합니다. 이때 응답코드로 201 created 를 사용하기도 합니다.
요청 데이터 처리
단순히 데이터를 생성하거나 변경하는 것이 아니라 프로세스를 처리해야 하는 경우를 말합니다. 예를 들어 결제 완료 → 배달 시작 → 배달 완료와 같이 말이죠. 이 결과로 새로운 리소스가 생성되지 않을 수도 있습니다.
다른 메서드로 처리하기 애매한 경우

PUT

representation 을 대체하며, 해당 representation 가 존재하지 않는 경우에는 생성합니다. 하지만 이때 주의해야할 점이 있습니다.
만약, “username” 과 “age” 라는 두가지 필드가 서버에 존재했는데, 클라이언트에서 PUT 으로 “age” 필드의 데이터만 보냈다면 어떻게 될까요?
PUT 은 representation 을 대체한다고 했습니다. 즉, 덮어쓰기 개념이죠. 이를 생각해보면 간단합니다. “username” 필드는 사라지게 됩니다.
부분만 바꾸고 싶다면 어떻게 해야 할까요? PATCH 를 사용하면 됩니다.
PUT 의 경우 클라이언트가 representation 의 위치를 알고 URI 를 지정합니다. (중요) 이는 POST 와 대비되는데요, 아래의 그림을 보면 더 쉽게 이해 가능합니다.
포스트의 경우 representation 의 명확한 위치를 지정하지 않습니다. 때문에 /members 다음으로 어느곳에서 처리가 될 지 알수 없습니다. 하지만 PUT 의 경우 명확하게 /members/100 이라는 위치를 지정하고 있는것을 확인할 수 있습니다.

PATCH

representation 을 부분 변경할 때 사용합니다.
클라이언트
서버
서버(변경 후)
PATCH 를 지원하지 않는 서버에서는 POST 를 사용하면 됩니다!

DELETE

representation 을 제거할 때 사용합니다.