이번 TIL은 인프런의 "모든 개발자를 위한 HTTP 웹 기본 지식"을 학습하고, 정리한 내용입니다.
만약, 제 글의 내용을 퍼갈 시에는 " 모든 개발자를 위한 HTTP 웹 기본 지식 "도 출처에 첨부하시기 바랍니다.
PUT의 메세지는 POST 메세지와 다른 점이 하나 있다.
위의 이미지를 잘 살펴보자!!
PUT 메세지는 클라이언트 쪽에서 구체적인 리소스의 전체 경로를 다 알고 있다.
=> 즉, 클라이언트가 리소스의 전체 위치를 알고, URI를 지정하는 거다.
위의 예제는 클라이언트가 100번에 넣을 것을 PUT에서는 알고 있다.
바로 이게, POST vs PUT의 큰 차이점이다!!
=> 클라이언트에서 보낸 위치에 이미 존재하는 데이터가 있으면, 새로 보낸 데이터로 대체된다.
=> 클라이언트가 지정한 위치가 존재하는 리소스가 없으면, 신규 리소스가 생성된다.
=> 완전히 대체하는 점이 중요한데, age만 보냈다고 해서, age만 부분 대체 되는 것이 아니라, 100번에 위치한 "username" 필드가 다 날아간다.
이런 위험성 때문에, PUT는 리소스를 수정하기 위해서 사용하는 것이 아니다. 기존 리소스를 완전히 갈아치우기 위해서 사용한다.
기존 리소스를 수정하고 싶다면??
PUT의 이런 단점을 극복하기 위해서, PATCH가 나왔다.
대부분 PATCH를 사용할 수 있지만, 간혹 PATCH가 지원이 안 되는 서버들도 있다. 그럴 때는 POST를 써주면 된다.