본문 바로가기
넓고 얕은 네트워크 지식/http

HTTP 메서드

by 팡펑퐁 2022. 10. 21.
728x90

HTTP API를 만들 때

 리소스와 행위를 분리해야한다. 가장 중요한 것은 리소스를 식별하는 것이다.
  • URI는 리소스만 식별
  • 리소스와 해당 리소스를 대상으로 하는 행위를 분리
  • 리소스 : 회원
  • 행위 : 조회, 등록, 삭제, 변경
  • 리소스는 명사, 행위는 동사 ex) 미네랄(리소스)을 캐라(행위)

주요 메서드

  • GET : 리소스 조회
  • POST : 요청 데이터 처리, 주로 등록에 사용
  • PUT : 리소스를 대체, 해당 리소스가 없으면 생성
  • PATCH : 리소스 부분 변경
  • DELETE : 리소스 삭제

기타 메서드

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

 

GET

  • 리소스 조회
  • 서버에 전달하고 싶은 데이터는 query(쿼리 파라미터, 쿼리 스트링)를 통해서 전달
  • 메시지 바디를 사용해서 데이터를 전달할 수 있지만, 지원하지 않는 곳이 많아서 권장하지 않는다.
  • 조회 데이터는 최대한 GET을 이용한다.

 

POST

  • 요청 데이터 처리
  • 메시지 바디를 통해 서버로 요청 데이터 전달
  • 서버는 요청 데이터를 처리(단순히 데이터를 생성하거나, 변경하는 것을 넘어 프로세스를 처리함)
  • 메시지 바디를 통해 들어온 데이터를 처리하는 모든 기능을 수행
  • 주로 전달된 데이터로 신규 리소스 등록, 프로세스 처리에 사용
  • POST의 결과로 새로운 리소스가 생성되지 않을 수 있음
  • ex) POST /orders/{orderId}/start-delivery (컨트롤 URI : 동사형 URI, 리소스로 모든 URI를 설계할 수 없음)
  • JSON으로 조회 데이터를 넘겨야 하는데 GET 메서드를 사용하기 어려운 경우에 조회용으로 POST를 사용하기도 함
  • 201 created의 경우 Location이라는 이름으로 자원 생성 경로를 함께 응답받는다.

 

PUT

  • 리소스를 대체
  • 리소스가 있으면 대체하고, 없으면 생성한다. 쉽게 덮어버린다고 생각하면 됨.
  • 완전 대체하기 때문에 리소스 중 일부 수정이 아니라 전부 덮어버림
  • 클라이언트가 리소스를 식별함(중요)
  • 클라이언트가 리소스 위치(경로)를 알고 URI를 지정하며 이것이 POST와의 차이점이다.

 

PATCH

  • 리소스 부분 변경(PUT과 다르게 부분적으로 변경을 할 수 있음)

 

DELETE

  • 리소스 제거

 

 

728x90

'넓고 얕은 네트워크 지식 > http' 카테고리의 다른 글

HTTP API 설계  (0) 2022.10.23
HTTP 메서드의 속성  (0) 2022.10.22
HTTP 메시지의 구조  (0) 2022.10.21
HTTP의 특징  (0) 2022.10.21
HTTP의 기본  (0) 2022.10.21