개발자 공부 - 인프런 온라인 강의/모든 개발자를 위한 HTTP 웹 기본 지식

[섹션 5. HTTP 메서드] HTTP 메서드 - PUT, PATCH, DELETE / 인프런 김영한 - 모든 개발자를 위한 HTTP 웹 기본 지식

easpop 2025. 1. 31. 22:57
728x90
반응형


이번 시간에는 지난 시간의 GET, POST에 이어서 PUT, PATCH, DELETE에 대해서 알아보았다.

 

먼저 PUT은 리소스를 대체한다.

쉽게 말해서, 폴더에 파일을 복사하는 것과 비슷하다고 할 수 있다.

폴더에 파일을 넣을 때, 그 폴더에 파일이 없으면 파일이 새로 생기고, 기존에 똑같은 파일이 있으면 덮어쓰게 된다.

이 덮어쓰는 것이 PUT이라고 볼 수 있다.

 

PUT /members/100 HTTP/1.1

{"userName": "hello", "age: 20}

이런 식으로 요청을 한다고 하자.

위와 같은 데이터가 없으면 신규로 생성을 하고, 있다고 하면 기존것을 날려버리고 새로 만든다.

즉, 덮어쓰기와 같은 개념이라고 할 수 있다.

 

중요한 것은 클라이언트가 리소스를 식별한다.

PUT /members/100 이런식으로 요청을 한다고 했을 때,

클라이언트가 리소스 전체 경로를 다 알고 있고 URI을 지정한다.

POST와 다른 점은, 예를 들면, POST는 POST /members 요청을 서버에서 받아서 처리를 한다.

하지만 PUT은 클라이언트가 /members/100 이런식으로 구체적으로 경로를 지정 한다.

이렇기 때문에 클라이언트가 리소스를 식별한다고 할 수 있다.

728x90
반응형

주의해야할 점은, 리소스를 완전히 대체한다는 것이다.

예를 들어보자.

/members/100 이라는 경로에 {userName : "young", "age" : 20} 이라는 리소스가 있다고 가정하자.

PUT으로 /members/100을 요청을 하려고 한다.

데이터는 userName 필드가 없는 {"age" : 50} 만 있다고 하자.

그럴 경우에는 기존의 리소스가 없어지고 대체되면서 userName 필드가 사라지고 {"age" : 50} 만 남게 된다.

그렇기 때문에 age만 update하고 싶을 때는 PUT은 맞지 않다고 할 수 있다.

이런 경우에는 PATCH가 적합하다.

 

PATCH는 리소스를 부분 변경한다.

위와 같은 경우에 PATCH로 요청을 하게 되면,

{userName : "young", "age" : 50}으로 바뀌게 되므로 의도에 맞게 리소스가 변경이 된다.

 

리소스를 제거할때는 DELETE를 쓰면 된다.

요청은 DELETE /members/100 이런식으로 보내게 된다.

 

특이사항은, 서버중에서 가끔 PATCH를 지원하지 않는 경우가 있다.

HTTP에서 PATCH를 못받는 경우가 있는데 그런 경우에는 POST를 쓰면 된다.

728x90
반응형