HTTP 메서드

  • URI는 리소스 별로 구분짓는것이 중요한데 특히, 리소스만 식별하게 된다. 
  • 회원 관리 API 서버를 만든다고 가정해보면, 리소스는 회원이 될것이고 행위는 조회, 등록, 삭제, 변경이 된다. 
    • 이 회원 관리 API에서 행위를 구분짓는것이 GET, POST, PUT, PATCH, DELETE 종류가 있다. 
  • GET
    • 리소스를 조회 하는 역할을 수행한다.
    • 검색엔진에 Query Parameter, String을 통해서 전달한다. 
    • 메시지 바디는 잘 취급하지 않는다. 서버에서 정한 규약이 존재하기 때문에 잘 맞지 않는다. 
  • POST
    • 요청 데이터를 처리하게 된다. 
    • 메시지 바디를 통해서 서버로 요청 데이터를 전달한다. (가끔 조회 목적으로 쓰기도 한다.)
    • HTTP 메서드 설계시에 리소스로 URI를 사용하는 경우도 많지만 컨트롤 URI도 많이 쓴다. /orders/{orderId}/start-delivery (컨트롤 URI)
  • 통상적으로 GET을 쓰면 조회 목적으로 처리되고 캐싱할 수 있지만 POST에서는 캐싱하기 어렵다.
  • PUT
    • 리소스를 완전히 대체한다. 기존에 리소스가 삭제될 수 있다.
      • 예를 들면 기존에 속성 값으로 username, age가 존재했는데 age만 변경하려고 PUT Method를 통해서 보내면 username은 삭제가 된다. 
    • 클라이언트가 리소스 위치를 알고 URI를 지정할 수 있다. 이게 POST와 차이점
      • PUT > /members/100
      • POST > /members/ 
  • PATCH 
    • 부분적으로 변경해서 사용하겠다. 기존에 필드 지워지는건 용납못하는 경우(PUT 덮어씌워버리기 했을 때)
    • 부분적으로 리소스 데이터를 바꾸고 싶으면 PATCH를 사용한다. 
    • 일부 서버에서 PATCH가 지원이 되지 않는 경우 POST를 쓰면 된다.
  • DELETE
    • 리소스를 제거한다. DELETE /members/100 이렇게 쓴다. 

HTTP 속성

  • 안전하다.
    • 호출해도 리소스가 변경되지 않는다. GET 요청으로 HTTP 요청을 보내면 조회만 하기 때문에 안전하다 표현을 한다. 
  • 멱등하다.
    • 한번 호출하든 두번 호출하든 백번을 호출하든 결과가 똑같다. 
    • 멱등한 메서드는 GET / PUT 메소드를 들 수 있다. 간단히 보면 GET 은 조회 목적으로 사용되기 때문에 호출되는 결과가 똑같지만 PUT을 보면 파일을 덮어서 사용하기 때문에 멱등하다고 볼 수 있다. 
    • DELETE도 마찬가지로 리소스 삭제이기 때문에 결과는 똑같다.
    • 하지만, POST는 멱등하지 않다. POST는 요청 데이터를 처리하기 때문에 멱등하다고 볼 수 없다. (결제면에서 두번 발생할 수 있는 위험이 존재한다.)
    • 참고로, 멱등은 외부 요인에서 중간에 리소스가 변경되는것까지 고려하지 않는다. 그래서 GET > PUT > GET 해도 사실상 멱등하다고 볼 수 있다. 각 메서드의 특징을 고려한 결과다. 
    • GET, HEAD는 URL 정리 key로 잡기 때문에 캐시를 사용하는데 큰 어려움이 없지만, POST, PATCH 는 본문 내용까지 키로 고려되기 때문에 잘 쓰지 않는다.  

 

출처 

https://dribbble.com/shots/15126018-Cloud-icon-for-digital-ecosystem-logo-design-symbol 

'Computer Science > Network' 카테고리의 다른 글

HTTP 상태 코드  (0) 2021.12.09
HTTP 메서드 활용  (0) 2021.12.09
HTTP 기본  (0) 2021.12.07
URI와 웹 브라우저 요청 흐름  (1) 2021.12.07
인터넷 네트워크  (1) 2021.12.07