Resolved
Written on
·
226
0
그래프큐엘을 다시 보면서 강의 정주행 해보고 있습니다.
질문: update message 부분을 put 대신에 patch로 리팩토링해도 괜찮을까요?
저는 프론트 위주로만 알고 있어서 api쪽은 단순히 전체 update는 put, 부분적인 data 수정은 patch 정도로만 알고 있는데요, 어떤 경우 put/patch를 쓰는 게 더 좋은지 의견 궁금해서 남깁니다.
Answer 1
1
"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를 사용하도록 리팩토링 해보시는건 좋은 생각이십니다!
답변 감사합니다 많은 도움 되었습니다!!!