본문 바로가기
📝Computer Science/etc

[RESTful]POST와 PUT의 차이

by haegomm 2023. 12. 12.

REST API를 사용하면서 HTTP 메소드에 대해 기본적으로 POST는 생성 PUT은 수정이라는 것을 잘 알고있습니다.

그렇다면 POST와 PUT의 차이점에 대해서는 생성과 수정이라는 것 외에 또 어떤 구체적인 차이점이 있는지 알아보고자 합니다!

 

 POST 

 정의 

Request(요청)에 포함된 Entity(Http body에 해당)을 Request-URI에 정의된 리소스의 하위(Suboridiate) Entity로 새롭게 생성하는 요청을 서버에 보낼때 사용되는 HTTP Method입니다.

따라서 Request-URI는 리소스의 Entity를 나타내는 Collection URI이어야 합니다.

말이 어려울 수 있어 예시를 들어보겠습니다.

학생들의 정보를 저장하는 student가 있습니다.
그리고 각 학생의 정보들은 student 라는 큰 카테고리 밑에 하위 item으로 등록되고 저장될 것입니다.
이때 student 는 학생들이 모인 Collection이 됩니다.
이것을 URI로 적용해본다면 학생 정보의 Collection-URI는 /student 가 됩니다.

POST는 /student  라는 Collection URI의 하위에 새로운 학생(Entity)을 생성할 때 사용되는 HTTP Method라고 할 수 있는 것입니다!

 PUT 

 정의 

Request-URI에 있는 Resource가 존재한다면, Request에 있는 Entity에 값으로 리소스를 Update(갱신)합니다.

만약 Resource가 존재하지 않고, Request-URI와 Resource-URI가 올바르다면 리소스를 Create(생성) 할 때 사용되는 HTTP Method입니다.

PUT은 기존의 /student  라는 Collection URI에 더하여 /student/{student-id} 로 해당 자원의 식별자를 나타내줘야합니다.

 


 차이점 

POST /student

▸ Http Body에 있는 정보로 새로운 student 하위 Resource 생성합니다.

 

PUT /student/{존재하는-student-id}

존재하는 student-id 에 존재하던 정보를 Overwrite(덮어쓰기)해서 정보를 갱신합니다.

 

PUT /student/{존재하지 않는-student-id}

존재하지 않는 student-id로 새로운 Resource 생성합니다.

 

 정리 

  • POST의 경우,
    주로 Collection(자원의 집합)에 새로운 자원을 추가하는 데 사용되며, URI에는 Collection 자체만 포함됩니다.
    예를 들어, /students는 학생 목록 컬렉션을 나타냅니다.

    PUT의 경우,
    특정 자원을 업데이트하거나 생성할 때 사용되며, URI에는 Collection과 함께 해당 자원의 식별자가 있어야 합니다.
    예를 들어, /students/{student-id}는 특정 학생의 자원을 나타냅니다.

 

  • POST멱등성없습니다. 
    동일한 POST로 요청을 여러 번 보내면 각각 다른 결과가 나올 수 있습니다. Resource
    의 생성을 담당하는데, 요청마다 새로운 Resource 가 생성되기 때문입니다.
    PUT멱등성있습니다.
    동일한 PUT요청을 여러 번 보내면 동일한 결과가 나옵니다. Resource의 생성과 수정을 담당하는데, 요청마다 같은 Resource를 반환합니다.

*멱등하다: 여러 번 하더라도 결과가 달라지지 않는다라는 뜻

 


 PATCH와 PUT의 차이는? 

PATCH도 수정을 담당하고 PUT도 수정에 사용되는데 이 둘은 어떻게 다른 것일까요?

 

PATCH수정만 담당하며 Resource일부분수정할 때 사용되며

PUTResource모든 속성수정하기 위해 사용된다는 차이점이 있습니다!

 


참고자료

https://velog.io/@53_eddy_jo/RESTful%ED%95%9C-%EC%84%B8%EA%B3%84%EC%97%90%EC%84%9C%EC%9D%98-POST%EC%99%80-PUT%EC%9D%98-%EC%B0%A8%EC%9D%B4-%EA%B1%B0%EA%B8%B0%EC%97%90-FETCH%EA%B9%8C%EC%A7%80

 

RESTful한 세계에서의 POST와 PUT의 차이, 거기에 PATCH까지

HttpResponseHTTP/1.1 200 OK{ “id”: 1, “name”: “뽀로로”, “grade”: 1}HttpResponseHTTP/1.1 200 OK{ “id”: 1 “name”: “뽀로로”, “grade”: 2}HTTP/1.1 200 OK{ “id”

velog.io

https://kingjakeu.github.io/study/2020/07/15/http-post-put/

 

RESTful API POST와 PUT의 차이 · Studio u by kingjakeu

RESTful API POST와 PUT의 차이 05 Jan 2021 REST API를 설계 할 때, 도움이 되도록 POST와 PUT을 차이를 알아보자. 흔히들 POST는 자원을 생성하고, PUT은 생성 혹은 갱신하는 것이 라고 한다. 결국 둘 다 자원을

kingjakeu.github.io

https://geunzrial.tistory.com/170

 

POST와 PUT의 차이점

Rest API를 자주 사용하면서 Http메소드에 대해 기본적으로 잘 알고 있다고 생각했습니다... 하지만 post와 put의 차이점에 대한 질문을 받았을 때 생성과 수정이라는 답 말고는 할 수 있는게 없었습

geunzrial.tistory.com

 

'📝Computer Science > etc' 카테고리의 다른 글

[RESTful]REST, REST API, RESTful이란?  (0) 2023.12.12