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 |
댓글