put
그래프큐엘을 다시 보면서 강의 정주행 해보고 있습니다.
질문: update message 부분을 put 대신에 patch로 리팩토링해도 괜찮을까요?
저는 프론트 위주로만 알고 있어서 api쪽은 단순히 전체 update는 put, 부분적인 data 수정은 patch 정도로만 알고 있는데요, 어떤 경우 put/patch를 쓰는 게 더 좋은지 의견 궁금해서 남깁니다.
답변 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를 사용하도록 리팩토링 해보시는건 좋은 생각이십니다!
질문있습니다 !
0
134
2
sass 오류
0
174
1
does not match
0
164
2
프로젝트 배포
0
299
1
코드 똑같이 쳤는데 scss 적용이 안돼요 ㅠㅠ
0
748
1
scss 스타일 적용
0
478
2
yarn run client시 에러는 안 나는데 호스트가 열리질 않습니다 ㅠㅠ
0
430
1
무한 스크롤 관련 질문 드립니다.
1
513
2
props 를 넘겨줄 때 함수를 그대로 넘겨줄 때와 화살표 함수로 감싸서 넘겨줄 때의 차이가 궁금합니다 :)
0
454
1
getInitialProps 과 getServerSideProps에 대해서 질문드립니다!
0
1144
1
node-sass를 했을 때 에러가 발생합니다.
0
377
1
[소스 다운로드 안됩니다]
0
323
1
rendered HTML error 관련
2
2187
2
닉네임 부분이 잘못되어 있는 것 같습니다.
0
448
2
Typescript 질문드려요!
0
332
1
error 관련하여
1
289
1
질문이 있습니다!.
0
278
1
질문이 있습니다!
0
486
1
수정된 내용까지 확인했는데 에러가 납니다 ㅠ
1
303
2
React Hydration Error 가 나는 이유가 무엇일까요 ?;;
0
631
1
useRef를 선호하시는 이유가 궁금합니다!
1
794
1
react-query 4.0.0 버전에선 에러가 납니다
0
668
1
gql 백틱 안에 색깔 입혀지는 확장프로그램이 어떤건지 알 수 있을까요?
2
685
1
typeScript에 대한 질문을 어디다가 올려야할지 몰라서 여기다가 남깁니다!
0
303
1





