PUT
- 리소스를 대체
- 리소스가 있으면 대체
- 리소스가 없으면 생성
- 쉽게 이야기해서 기존에 있는거를 덮어버림
- 예) username : shin , age : 20 에서
age : 22를 보내면, username 필드 삭제, age :22로 완전히 대체한다.
- 중요! 클라이언트가 리소스를 식별
- 클라이언트가 리소스 위치를 알고 URL 지정
- POST와 차이점 (리소스의 전체 위치를 알고있어야된다)
PATCH
DELETE
HTTP 메소드의 속성
- "안전"
- 호출해도 리소스를 변경하지 않는다. (GET방식이 대표적으로 안전)
- "멱등"
- 한 번 호출하든 두 번 호출하든 100번 호출하든 결과가 똑같다
- 멱등 메서드
- GET : 한 번 조회하든, 두번 조회하든 같은결과가 조회된다.
- PUT : 결과를 대체한다. 따라서 같은 요청을 여러번해도 최종결과는 똑같다.
- DELETE : 결과를 삭제한다. 같은 요청을 여러번 해도 삭제된 결과는 똑같다.
- POST : 멱등이 아니다. 두번 호출하면 같은 결제가 중복해서 발생한다.
멱등 예시
Q : 재요청 중간에 다른 곳에서 리소스를 변경해버리면?
- 사용자 1: GET -> username : A , age : 20
- 사용자 2: PUT -> username : A , age : 30
- 사용자 1: GET -> username : A , age : 30 -> 사용자 2의 영향으로 바뀐 데이터 조회
A : 멱등은 외부 요인으로 중간에 리소스가 변경되는 것 까지는 고려하지않는다.
- "캐시 가능"
- GET, HEAD, POST, PATCH 캐시가능
- 실제로는 GET, HEAD 정도만 캐시 사용
- POST, PATCH는 구현이 쉽지않음