- 둘 다 자원을 수정하는 역할
- PUT
- The PUT method requests that the state of the target resource be created or replaced with the state defined by the representation enclosed in the request message payload.
- 자원의 전체 교체
- 자원 교체 시 모든 필드 필요
- 만약 전체가 아닌 일부만 전달할 경우, 전달한 필드 외 모두 null or 초기값 처리되니 주해야한다.
- PATCH
- This specification defines the new HTTP/1.1 [RFC2616] method, PATCH, which is used to apply partial modifications to a resource.
- 자원의 부분 교체
- 자원 교체 시 일부 필드 필요
PUT과 PATCH 차이점: 멱등성과 관련된 차이가 있다.
- 멱등성이 뭘까?
- 멱등성이 유지되어야 하는경우 같은 행위를 여러 번 반복하더라도 같은 효과를 가져야 한다.
- PUT
- 리소스의 변경을 일으키지만 여러번 실행되어도 1번 실행된것과 동일한 결과를 가져야 한다
- 멱등성이 성립하지 않으면, 같은 행위를 여러 번 반복하는 경우 요청마다 다른 효과가 발생된다.
- PATCH
- 그래서 여러 번 실행되면 결과가 계속 달라질 가능성이 있기 때문에 신경 쓸 부분이 상대적으로 많다.
- PATCH 메소드를 사용하려면 Etag의 조합과 더불어 MUST, MUST NOT, SHOULD NOT 시리즈의 제약 내용들이 펼쳐진다.
참고
HTTP
- Hypertext Transfer Protocol
- Hypertext 를 주고받을 수 있게 해준다.
- Text -> Hypertext
URL
- Uniform Resource Locator
- URL은 흔히 웹 주소라고도 하며, 컴퓨터 네트워크 상에서 리소스가 어디 있는지 알려주기 위한 규약이다. URI의 서브셋이다.
URI
- Uniform Resource Identifier
- 통합 자원 식별자
✅ URI는 식별하고, URL은 위치를 가르킨다.
DNS
- Domain Name Server
- URL 에 해당하는 IP를 리턴해준다.
IP
REST
- Representaional State Transfer
- 자원(resource)의 대표(representation)에 의한 상태 전달
- resouce를 이름으로 구분하고 해당 자원의 상태를 주고 받는 모든 것이 REST라고 할 수 있다.
- REST를 좁은 의미로 HTTP를 통해 CRUD를 실행하는 API를 뜻한다.
- HTTP 프로토콜을 이용하기 때문에 URL(route)를 통해 자원을 특정짓고 HTTP Verbs를 통해 할일(CRUD)을 지정한다.
- JSON을 통해 데이터를 주고 받는 것이 일반적이다.
RESTfUL
- RESTful은 REST를 REST답게 쓰기 위한 방법으로 누군가가 공식적으로 발표한 것이 아니라 여러 개발자들이 비공식적으로 의견을 제시한 것들로 명확한 정의는 없다.
- 목적은 명확하다.
- 이해하기 쉽고 사용하기 쉬운 REST API를 만드는 것