본문 바로가기
네트워크

POST와 PUT의 차이점

by 근즈리얼 2021. 11. 29.
728x90

Rest API를 자주 사용하면서 Http메소드에 대해 기본적으로 잘 알고 있다고 생각했습니다...

하지만 post와 put의 차이점에 대한 질문을 받았을 때 생성과 수정이라는 답 말고는 할 수 있는게 없었습니다...

 

이번 포스팅에서 두 메소드가 어떻게 다른지에 대해서 알아보겠습니다.

 


우선,

POST : 데이터 생성

PUT : 데이터 생성 및 수정

입니다.

 

간단한 예시를 보겠습니다.

post 예시입니다.

post/member
{
    "name":"hyeok"
    "age":26
}

HttpResponse
200 OK
{
  "id":1
  "name":"hyeok"
  "age":26
}

- 포스트 방식으로 요청했을 때 id가 1로 잘 생성된 것을 알 수 있습니다.

 

이번에는 put 예시를 보겠습니다.

put/member/2
{
    "name":"hi",
    "age":2
}
200 ok
{"id":2,"name":"hi","age":2}

-2번 member가 없으므로 새롭게 생성된 것을 볼 수 있습니다. 그리고 만약 2번이 있었다면 이름은 hi 나이는 2로 바뀌었을 것입니다.


이제, 어쩌면 이번 포스팅의 핵심이라고 할 수 있는 부분입니다.

post와 put을 여러번 사용했을 때 어떻게 반응하는지 알아보겠습니다.

Post

post/member
{
    "name":"hyeok"
    "age":26
}

post/member
{
    "name":"hyeok"
    "age":26
}

post/member
{
    "name":"hyeok"
    "age":26
}

HttpResponse
200 OK
{
  "id":1
  "name":"hyeok"
  "age":26
}
HttpResponse
200 OK
{
  "id":2
  "name":"hyeok"
  "age":26
}
HttpResponse
200 OK
{
  "id":3
  "name":"hyeok"
  "age":26
}

- 3번 반복했을 때 3번 새로운 member가 생성된 것을 알 수 있습니다.

 

Put

put/member/2
{
    "name":"hi",
    "age":2
}
put/member/2
{
    "name":"hi",
    "age":2
}
put/member/2
{
    "name":"hi",
    "age":2
}
200 ok
{"id":2,"name":"hi","age":2}

- memberId의 값을 2로 put 메소드를 세번 사용하더라도 처음에만 한번 만들어지고 더 생성되지 않습니다.

 

=> 결론적으로 이런 모습을

put은 멱등하지만 post는 멱등하지 않다고 할 수 있습니다.

 

여기서 멱등하다는 '여러번 하더라도 결과가 달라지지 않는다' 라고 생각하시면 됩니다!!

728x90

'네트워크' 카테고리의 다른 글

HTTP API 메서드 -PUT,PATCH,DELETE  (0) 2021.06.17
HTTP API GET,POST  (0) 2021.06.15
HTTP API기본  (0) 2021.06.14

댓글