Dev/HTTP

HTTP 메서드 종류 PUT, PATCH 그리고 DELETE

Okdol-Min 2021. 5. 23. 15:08

지난 번에 이어서 나머지 메서드도 알아보자!


PUT

리소스를 대체한다. (파일의 복사랑 유사) (출처)

기존에 파일이 없으면 새로 넣어주고, 똑같은 파일이 있다면 덮어 쓴다.

  • 리소스가 있으면 대체
  • 리소스가 없으면 생성
  • 쉽게 이야기해서 덮어버린다.
  • 즉, 완전히 대체해버린다.

중요! 클라이언트가 리소스를 식별

  • 클라이언트가 리소스 위치를 알고 URI 지정
  • POST와의 차이점을 알아두자

아래 그림을 보면 PUT /members/100 HTTP/1.1 

 → 클라이언트가 구체적인 리소스 전체 경로를 알고있고 URI를 지정한다!

 → 이 점이 POST와의 차이점이다.

 → PUT 같은 경우는 클라이언트가 리소스를 식별한다.

HTTP 메서드 PUT


PUT

리소스가 있는 경우 (출처)

보내려는 리소스가 있는 경우

  • username : old로 age를 50이라는 메시지를 담아서 PUT으로 보낸다.
  • 이 메시지는 서버에 있는 리소스를 보낸 메시지로 대체한다.

PUT을 통한 리소스 대체

 

주의할 점

PUT은 리소스를 완전히 대체한다는 점을 꼭 기억하자!

아래와 같이 username 없이 age만 담아서 보내게 될 경우

  • PUT은 완전 대체이기 때문에 보낸 메시지인 age:50으로만 대체된다.
  • 즉, 서버 리소스에 있는 username 필드가 삭제되어버리고 클라이언트에서 요청한 메시지로 덮어쓰게된다는 점

PUT 리소스 완전 대체

 

이런 대체적인 상황으로 사용하는 PUT과는 달리 부분만 변경하고 싶을 땐 어떻게 하지?


해서 나온 HTTP 메서드가 PATCH 이다! (출처)

PATCH의 과정

부분 변경하는 PATCH

 

부분 변경하는 PATCH2

  • 부분 변경하는 경우 PATCH를 사용하는데 서버마다 PATCH를 지원하지 않는 서버도 있다.
  • 그럴 경우에는 POST를 쓰자! 왜냐 POST는 앞에서 만능이라고 했으니까

DELETE

  • 이름에서도 알수 있듯이 리소스를 제거하는 데 사용하는 HTTP 메서드 이다.
  • 클라이언트가 요청한 메시지에 포함된걸 서버가 보고 삭제해준다.