모든 개발자를 위한 HTTP 웹 기본 지식 3. HTTP 메서드
인프런 강의 모든 개발자를 위한 HTTP 웹 기본 지식 수강내용 정리
HTTP 메서드
API 의 URI 를 설계할때는 리소스만 식별하도록 하고 리소스를 대상으로 하는 행위는 메서드로 구분한다.
메서드는 클라이언트가 서버에 요청할때 기대하는 행동을 의미한다.
HTTP 메소드 | RFC | 요청에 Body가 있음 | 응답에 Body가 있음 | 안전 | 멱등(Idempotent) | 캐시 가능 |
---|---|---|---|---|---|---|
GET | RFC 7231 | 아니요 | 예 | 예 | 예 | 예 |
HEAD | RFC 7231 | 아니요 | 아니요 | 예 | 예 | 예 |
POST | RFC 7231 | 예 | 예 | 아니요 | 아니요 | 예 |
PUT | RFC 7231 | 예 | 예 | 아니요 | 예 | 아니요 |
DELETE | RFC 7231 | 아니요 | 예 | 아니요 | 예 | 아니요 |
CONNECT | RFC 7231 | 예 | 예 | 아니요 | 아니요 | 아니요 |
OPTIONS | RFC 7231 | 선택 사항 | 예 | 예 | 예 | 아니요 |
TRACE | RFC 7231 | 아니요 | 예 | 예 | 예 | 아니요 |
PATCH | RFC 5789 | 예 | 예 | 아니요 | 아니요 | 예 |
-
안전
호출 시 대상 리소스를 변경하지 않는다. -
멱등
같은 리소스를 여러번 호출해도 결과가 같다.
POST 는 두번 호출 시 새로운 리소스를 여러번 생성하므로 멱등하지 않다.
서버의 Timeout 등으로 정상적인 응답을 받지 못했을 때 클라이언트가 같은 요청을 다시 해도되는가의 근거가 되어 자동 복구를 할 수 있도록 한다.
외부 요인으로 중간에 리소스가 변경되는 것은 고려하지 않는다. -
캐시 가능
응답 결과를 캐시해서 사용해도 되는지의 여부를 의미한다.
GET, HEAD, POST, PATCH 가 캐시가 가능하지만 실제로 GET, HEAD 만 캐시로 사용한다.
GET
리소스를 조회한다.
서버에 전달하고자 하는 데이터는 query를 통해서 전달한다.
BODY 로 데이터를 전달할 수 있지만 지원하는 서버가 많지 않아 권장하지 않는다.
POST
요청 데이터를 처리한다.
클라이언트가 BODY 로 처리할 데이터를 서버에 전달하고, 서버는 데이터를 받아서 해당 데이터를 처리 하는 모든 기능을 수행한다.
주로 신규 데이터로 등록하거나 내부적인 프로세스 처리에 사용한다.
신규 데이터 생성 시 새로운 리소스를 생성하고 결과를 응답메세지로 클라이언트에게 반환한다.
리소스 URI 에 POST 요청이 오면 어떻게 처리할지 리소스마다 별도로 지정한다.
PUT
기존에 해당 리소스가 있으면 완전히 대체하고 없으면 신규 생성한다.
클라이언트가 리소스의 위치를 알고 URI 를 지정해 서버에 전달한다. (POST 와의 차이점)
기존의 데이터는 삭제되고 새로운 데이터로만 저장된다.
PATCH
리소스의 일부를 변경한다.
기존 데이터를 삭제하지 않고 지정한 데이터 부분만 덮어쓴다.
PATCH 가 지원이 되지 않는 서버의 경우 POST 를 사용한다.
DELETE
해당 리소스를 삭제한다.
기타
-
HEAD
GET 과 동일하지만 BODY 를 제외하고 상태와 헤더만 반환한다. -
OPTIONS
대상 리소스에 대한 통신 가능 옵션(메서드)을 설명한다.
주로 CORS 에서 사용한다. -
CONNECT
대상 자원으로 식별되는 서버에 대한 터널을 설정한다. -
TRACE
대상 리소스에 대한 경로를 따라 메세지 루프백 테스트를 수행한다.