웹에서 브라우저와 서버 간에 데이터를 주고받기 위한 방식으로 사용되는 통신 규약
- Stateless(상태가 없는) 프로토콜
-> HTTP는 특정 상태를 담고 있지 않으며, 이전 요청이나 다음 요청을 기억하지 않음
존재하는 자원에 대한 요청
서버로부터 resource를 보내달라고 요청하며, 서버(혹은 DB)의 resource는 클라이언트로 전달만 될 뿐, 변경되지 않는다.
새로운 자원을 생성
서버에게 resource를 생성할 때 사용, 서버(혹은 DB)에서 새로운 resource를 생성할 수 있다.
존재하는 자원에 대한 삭제
서버(혹은 DB)에 있는 resource를 삭제할 수 있다.
존재하는 자원에 대한 변경(PUT은 생성도 가능)
서버(혹은 DB)에 있는 resource를 변경할 수 있다.
멱등성(Idempotence)
여러번 수행해도 결과가 같은 성질
- 멱(冪) : [수학] 같은 수(數)나 문자를 여러 번 곱함. 또는 그 값.
POST 메소드로 반복 요청을 보낼 경우, 같은 정보여도 리소스를 생성하기 위한 메소드이기 때문에 요청한 횟수마다 새로운 리소스를 생성한다.
반면 PUT 메소드로 반복 요청을 보내도, 서버(혹은 DB) 자원에 있는 동일한 리소스를 반환한다. 다만, 요청에 변경 사항이 있다면, 해당 리소스를 변경한다.
PUT과 PATCH는 둘다 데이터의 수정을 위한 메소드이지만,
둘 간에는 차이점이 있다.
// in data..
{ "name" : "kkakka",
"age" : 8,
}
// PUT request
{
"age" : 7
}
// result ...
{
"name" : null,
"age" : 7
}
// in data..
{ "name" : "kkakka",
"age" : 8,
}
// PATCH request
{
"age" : 7
}
// result ...
{
"name" : "kkakka",
"age" : 7
}