클라이언트가 리소스 위치를 알고 지정해서 요청 메세지를 보낸다.
post는 members/ 에 넣어줘~ 하면 서버가 식별자를 생성해서
members/100번 여기다 넣었어 ~ 하고 알려줬었는데
put은 클라이언트가 서버에 members/100 번에 넣어줘 이렇게 식별자의 위치를 알고 있다.
a member에 기존에 있던 내용이
{
"name" : "sudal"
"age" : 18
}
다시한번 a 에 대해 put 을 보내면 age 27만 남게 된다.
{
"age" : 27
}
그대로 덮어씌워져서 기존에 있던 내용은 다 사라진다는 말이다. 그러나 유의해야한다.
리소스를 제거할 때 사용한다.
호출해도 리소스가 변경되지 않는다.
호출했을 때 리소스에 대해 변경이 일어나면 안전하지 않은 것이다.
get은 안전하다.
get : 같은 결과가 조회된다.
put : 결과를 대체한다. 따라서 같은 요청을 여러번 해도 최종 결과가 같다.
delete : 결과를 삭제한다. 요청을 여러번 해도 삭제된 결과는 같다
post : 멱등이 아님. 두번 호출하면 결과가 중복해서 발생한다.
멱등은 외부 요인으로 중간에 리소스가 변경되는 것 까지는 고려하지 않는다.
응답 결과 리소스를 캐시해서 사용해도 되는가
캐시란
웹에서 보여지는 뷰 중 이미지가 있다. 그런데 바로 다음 창도 똑같은 이미지가 있으면
이걸 다시 요청해서 받지 않고 내 로컬 pc 에 저장하고 있는 것. 이라고 생각하자.
-get, head, post, patch 가 캐시가 가능한데,
실제로는 get, head 정도만 쓰인다.
post, patch 는 본문 내용까지 캐시 키로 고려해야하는데 구현이 쉽지 않기 때문이다.