해결된 질문
22.01.12 08:54 작성
·
202
답변 1
1
2022. 01. 12. 15:46
"patch는 멱등성을 보장하지 않는다"는게 대표적인 차이입니다.
https://developer.mozilla.org/ko/docs/Web/HTTP/Methods/PATCH
멱등성이란, 연산을 여러번 하더라도 결과가 달라지지 않는 성질을 의미합니다.
즉 put은 동일한 요청을 여러번 하더라도 결과가 달라지지 않는 반면,
patch는 달라질 수도 있다는 거죠.
예를 들어
1) PATCH messages/1
{ text: 'abc' }
이런식으로 patch를 수행하면 정확히 text만 'abc'로 변경되는 요청이니까
위 동일 요청을 여러번 수행하더라도 늘 같은 결과가 됩니다 (멱등성 O).
반면,
2) PATCH messages/1
{ add: 'text', value: 'def' }
'add'라는 명령을 수행할 타겟 프로퍼티('text')를 지정하여 'value'에 지정된 값을 추가할 수 있게 구현했다면
위 동일 요청에 의해서 text 값이 자꾸만 변경될 것입니다 (멱등성 X).
('abc' => 'abcdef' => 'abcdefdef' => 'abcdefdefdef' => ... )
애초에 2)와 같은 방식으로 api를 작성하지 않으면 되긴 하지만
바꿔말하면 "어떻게 구현하느냐"에 따라서 멱등성 여부가 "달라질 수 있다"는게 포인트입니다.
이런 맥락에서 patch는 쓰지 않고 오직 put만을 쓰도록 권장하는 사람들도 있고,
데이터 사이즈가 거대한 경우와 그렇지 않은 경우를 나누어 판단하자는 사람들도 있고,
위 성질을 잘 이해하고 사용하자는 사람들도 있지요.
어쩄든 patch를 사용하도록 리팩토링 해보시는건 좋은 생각이십니다!
2022. 01. 12. 20:10
답변 감사합니다 많은 도움 되었습니다!!!