멱등 vs 비멱등

멱등 : 여러 번 요청해도 결과가 동일하다.
비멱등 : 여러 번 요청하면 그 결과가 누적돼서 나온다. (동일하지 않다)

  • GET으로 조회하는 것은 멱등하다
    • 새로고침을 여러번 한다고 해서 페이지가 바뀌는 경우는 없다.
  • DELETE도 멱등하다.
    • 삭제하고, 두번째 삭제에서는 삭제할 게 없어서 삭제된 것 처럼 표시된다.
  • PUT 멱등하다.
    • 해당 리소스를 완전히 교체해 버리기 때문에 멱등이다.
  • PATCH 는?
    • 아래 참고

PATCH vs PUT

PUT : 자원의 전체 교체
PATCH : 자원의 부분 교체

PUT 잘못된 예시 PUT 옳은 예시 PATCH
원본 데이터 { "name" : "Hyeong","age" : 20 }
요청 body PUT /user/1 { "age" : 25 } PUT /user/1 { "name" : "Hyeon", "age" : 25 } PATCH /user/1 { "age" : 25 }
결과 { "name" : null, "age" : 25 } { "name" : "Hyeon", "age" : 25} { "name" : "Hyeong", "age" : 25 }

PATCH

다음과 같은 경우는 멱등이다.


  
{ "name" : "Hyeong" }

호출할 때 마다 나이를 10 더하는 식으로 변경하고 싶다고 가정하자.
그랬을 때, 다음과 같은 경우는 비멱등이다.


  
{
"operation" : "add",
"age" : 10
}

결론

PATCH 메서드는 나중에 따로 만들어진 스펙이다 - PATCH Method for HTTP

멱등, 비멱등에 대한 구분은 결국 서버 측에서 API를 만드는 개발자가 구현해야한다.
멱등이 될수 있고, 비멱등이 될 수 있다.

Reference

https://papababo.tistory.com/entry/HTTP-METHOD-PUT-vs-PATCH-%EC%B0%A8%EC%9D%B4%EC%A0%90
https://stackoverflow.com/questions/28459418/use-of-put-vs-patch-methods-in-rest-api-real-life-scenarios

'Java > Web' 카테고리의 다른 글

[Network] REST API, RESTful 이해와 설계 방법  (0) 2022.03.17