안전

멱등

캐시 가능

 

안전

호출해도 리소스를 변경하지 않는다.

POST, DELETE, PUT, PATCH 같은 메서드는 호출했을때 변경이 일어나기 때문에 안전하지 않다.

 

계속 호출하여 로그가 쌓이며 장애가 발생한다면?

안전은 그런 부분까지 고려하지 않고 해당 리소스만 고려한다.

 


 

멱등

f(f(x)) = f(x)

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

멱등 메서드

GET : 여러번 조회를 해도 같은 결과가 조회된다.

PUT : 같은 요청을 여러번 해도 최종 결과는 같다.

DELETE : 결과를 삭제한다. 여러번 하여도 삭제된 결과는 가탇.

POST : 멱등이 아니다! 두 번 호출하면 같은 결제가 중복해서 발생할 수 있다.

 

활용

자동 복구 매커니즘

예를 들어 DELETE 호출했는데 서버에서 응답이 없다.

그렇다면 클라이언트가 자동으로 DELETE를 호출한다고 해도 결과가 같기 때문에 상관이없다.

 

예를들어 

재요청 중간에 다른 곳에서 리소스를 변경해버리면?

사용자 1 GET -> user:A, age:20

사용자 2 PUT -> user:A, age:30

사용자1  GET -> user:A, age:30 (사용자 2의 영향으로 바뀐 데이터 조회)

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

 


 

캐시가능

응답 결과 리소스를 캐시해서 사용해도 되는가?

GET, HEAD, POST, PATCH 캐시가능

실제로는 GET, HEAD 정도만 캐시로 사용

- POST,PATCH 본문 내용까지 캐시 키로 고려해야 하는데 구현이 쉽지 않다.

+ Recent posts