HTTP 메서드
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 |
댓글
이 글 공유하기
다른 글
-
HTTP 상태 코드
HTTP 상태 코드
2021.12.09 -
HTTP 메서드 활용
HTTP 메서드 활용
2021.12.09 -
HTTP 기본
HTTP 기본
2021.12.07 -
URI와 웹 브라우저 요청 흐름
URI와 웹 브라우저 요청 흐름
2021.12.07