HTTP (3) Put, Patch, delete

수달·2021년 2월 19일
0

HTTP

목록 보기
5/14
post-thumbnail

PUT 메서드

  • 리소스가 있으면 대체한다.
  • 없으면 생성한다
    즉, 덮어 버린다는 뜻인다.

post와의 차이점

클라이언트가 리소스 위치를 알고 지정해서 요청 메세지를 보낸다.
post는 members/ 에 넣어줘~ 하면 서버가 식별자를 생성해서 
members/100번 여기다 넣었어 ~ 하고 알려줬었는데 

put은 클라이언트가 서버에 members/100 번에 넣어줘 이렇게 식별자의 위치를 알고 있다. 

주의 할 점은, 리소스가 대체될 경우, 완전히 대체되는 것이다.

a member에 기존에 있던 내용이

{
	"name" : "sudal"
    "age" : 18
}

다시한번 a 에 대해 put 을 보내면 age 27만 남게 된다.

{

    "age" : 27
}

그대로 덮어씌워져서 기존에 있던 내용은 다 사라진다는 말이다. 그러나 유의해야한다.

PATHC

  • 부분 리소스 변경
    새로 나왔어요,,
    필드가 name, age가 있을 때 하나만 바꾸고 싶을 때 사용한다.

DELETE

리소스를 제거할 때 사용한다.


HTTP 메서드의 속성

안전(safe)

호출해도 리소스가 변경되지 않는다.
호출했을 때 리소스에 대해 변경이 일어나면 안전하지 않은 것이다.
get은 안전하다.

멱등(idempotent)

  • 한번 호출하든 두번 호출하든 결과가 똑같다.

멱등 메서드

get : 같은 결과가 조회된다. 
put : 결과를 대체한다. 따라서 같은 요청을 여러번 해도 최종 결과가 같다.
delete : 결과를 삭제한다. 요청을 여러번 해도 삭제된 결과는 같다
post : 멱등이 아님. 두번 호출하면 결과가 중복해서 발생한다.

멱등 활용

  • 자동 복구 메커니즘
    서버가 타임아웃으로 정상 응답을 못주었을 때, 클라이언트가 같은 요청을 다시해도 되는가?

멱등은 외부 요인으로 중간에 리소스가 변경되는 것 까지는 고려하지 않는다.

캐시 가능(Cacheable)

응답 결과 리소스를 캐시해서 사용해도 되는가
캐시란
웹에서 보여지는 뷰 중 이미지가 있다. 그런데 바로 다음 창도 똑같은 이미지가 있으면
이걸 다시 요청해서 받지 않고 내 로컬 pc 에 저장하고 있는 것. 이라고 생각하자.
-get, head, post, patch 가 캐시가 가능한데,
실제로는 get, head 정도만 쓰인다.
post, patch 는 본문 내용까지 캐시 키로 고려해야하는데 구현이 쉽지 않기 때문이다.

profile
짜장면 쟁이

0개의 댓글