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의 일부분만 수정할 때 사용되며
PUT은 Resource의 모든 속성을 수정하기 위해 사용된다는 차이점이 있습니다!
참고자료
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 |
---|