우아한테크코스의 체스미션을 스프링으로 바꿔보는 과정에서 HTTP 메서드에 대한 궁금증이 생겼다. Get, Post는 각각 조회, 등록의 의미가 있다는 것으로 이해를 했는데 Put과 Patch는 둘 다 수정의 의미인데 어떤 차이가 있을까? 또한 조사해보니 Post도 수정의 의미일 수 있다고 한다? 뭘까?
우선 간단한 퀴즈로 시작해보자.
GET 메서드와 POST 메서드의 차이점은?
POST 메서드, PUT 메서드, PATCH 메서드의 차이점은?
GET: 서버의 리소스에게 데이터를 요청할 때 사용
POST: 서버의 리소스를 새로 생성/업데이트 시 사용
Indempotent(멱등)
: 몇 번을 실행하더라도 같은 값이 나온다. 라는 의미
POST -> CREATE
PUT -> REPLACE
PATCH -> UPDATE
이제 본론으로 들어가서,
example)
Request.
POST /crew
{
"name": "까라",
"speciality": "가스라이팅"
}
Response.
HTTP/1.1 200 OK
{
"id": "1",
"name": "까라",
"speciality": "가스라이팅"
}
HTTP/1.1 200 OK
{
"id": "2",
"name": "까라",
"speciality": "가스라이팅"
}
example)
Request.
PUT /crew
{
"id":1,
"name": "까라",
"speciality": "가스라이팅"
}
Response.
HTTP/1.1 200 OK
{
"id": "1",
"name": "까라",
"speciality": "가스라이팅"
}
기존 데이터가 없으면 새로 생성하고, 있으면 대체해준다.
항상 같은 값이 나올 것이다.
example)
Request.
PATCH /crew
{
"id":1,
"name": "썬",
}
Response.
HTTP/1.1 200 OK
{
"id": "1",
"name": "썬",
"speciality": "가스라이팅"
}
Post, Put, Patch 모두 수정의 의미를 내포하고 있어서 각각의 차이점을 알고 적절한 상황에서 적절한 메서드를 사용해야 겠다.