[1.21] Idempotence

Always·2025년 1월 21일

매일메일

목록 보기
23/69

https://www.maeil-mail.kr/question/90
요약: 멱등성은 HTTP 메서드의 특성중 하나로 리소스의 관점에서 같은 요청이 후에 왔을 때 변경되는지의 여부를 나타내는 것이다

멱등성

Get /api/2

위의 요청을 두번 보낸다고 해보자. 그렇다면 중간의 리소스의 변경이 있지 않다면 항상 같은 결과가 반환된다. 즉 항상 같은
리소스 를 반환한다. 이를 멱등성이라고 한다.

Post /api/1
{
  name:"AAA",
  age: 23
  
}

위의 요청을 두번 이상한다면, name AAA인 사람이 2명이상이 생기므로, 리소스의 관점에서 항상 같은 리소스를 반환하지 않는다. 즉 post메서드는 멱등하지 않다.

결과적으로 멱등하다는 것은 리소스의 관점에서 해당 메서드의 요청을 동일하게 2개이상을 했을 시, 변경이 없다는 것을 의미한다.

각 메서드의 멱등성은 위와 같다. PUT은 완전히 리소스의 모든 필드 전체를 교체 하므로, 멱등하나 patch의 경우 필드의 데이터를 추가하는 메서드로도 사용되므로, 멱등하다고 보기는 힘들다.
delete를 두번 사용하면, 두번째 리소스를 반환시 상태 코드는 404가 반환되는데, 이를 멱등하다고 볼 수 있을까??

위에서 말했다싶이 리소스의 관점에서 생각을 해야한다.
delete 메서드를 실행시 해당 리소스는 항상 없는 상태로 존재하므로, 멱등성을 보장받는다고 할 수 있다.

멱등성과 메서드

멱등성을 정확하게 이해하기 위해서, 각 메서드가 돌아가는 특성을 명확히 이해해야한다.

POST: 새로운 리소스를 생성-> 멱등성x
PUT: 리소스내의 모든 필드를 수정-> 멱등성 o
patch: 리소스내의 일부 필드를 수정-> 필드내에 데이터를 추가가 가능하다-> 멱등x

post,put,patch를 볼 때 멱등성에 대해서 생각해보는게 중요한 포인트라고 생각한다.

patch가 왜 멱등하지 않은지를 확인하려면?
https://www.inflearn.com/community/questions/110644/patch-%EB%A9%94%EC%84%9C%EB%93%9C%EA%B0%80-%EB%A9%B1%EB%93%B1%EC%9D%B4-%EC%95%84%EB%8B%8C-%EC%9D%B4%EC%9C%A0?srsltid=AfmBOooWDtL4RF9dD5ljZyEVEMZj9401CxMeTwq9YUPWdS24COUX1FiA
이것을 확인하면 된다.

출처: https://mangkyu.tistory.com/251![](https://velog.velcdn.com/images/msw0909/post/bf35cf2a-f16c-4b78-b3c6-46686a732414/image.png)

profile
🐶개발 블로그

0개의 댓글