인프런 커뮤니티 질문&답변

jaden님의 프로필 이미지
jaden

작성한 질문수

실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화

회원 수정 API

HTTP PUT, PATCH

해결된 질문

작성

·

678

0

안녕하세요! 좋은 강의 정말 잘 듣고있습니다 감사합니다!

다름이 아니라, 며칠 전 영한님이 찍으신 HTTP 강의를 들었습니다 해당 강의에서 PUT 과 PATCH 사용의 차이점에 대해서도 설명해 주셨는데  결론적으로 Member 리소스의 이름만 변경하는 현재 로직상  PUT 요청보다 PATCH 요청이 HTTP 스팩을 잘 맞춘(?) 설계라고 생각되는데 맞을까요? 

또 저는 이렇게 스팩을 정확하게 맞춘 경우에는 (엔티티 데이터 수정시 변경감지를 사용하는 것이 권장되지만) 수정을 할 때 PUT 요청으로 수정이 오는경우, detached 된 엔티티 데이터를 수정하고 merge를 사용하여 업데이트를 하는 방법도 고려할 수 있겠다고 생각했습니다. 그리고 동시에 또 스팩에 너무 발이 묶이는 것도 결국은 비효율적이라는 생각도 들면서 머리가 복잡해지네요

결론적으로, 실무에서는 PUT 과 PATCH 를 HTTP 스팩에 정확히 맞추어 사용하기 보다, PUT으로 통일하여 사용함으로써 개발의 효율을 높이는 경우가 많을까요? 구글링을 하다보니 그런 글들을 본 기억이 있는것 같은데 영한님의 생각도 궁금하네요!  다시 한번 좋은 강의 감사합니다!  :) 

답변 1

5

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. jaden님

강의 메뉴얼 v1.2 - 2020-10-13 이후를 보시면 PUT 대신에 PATCH를 사용해달라고 정정한 내용이 있습니다^^

> 오류정정: 회원 수정 API `updateMemberV2`은 회원 정보를 부분 업데이트 한다. 여기서 PUT 방식을 사용했는데, PUT은 전체 업데이트를 할 때 사용하는 것이 맞다. 부분 업데이트를 하려면 PATCH를 사용하거나 POST를 사용하는 것이 REST 스타일에 맞다.

추가로 질문 주신 부분은 HTTP 스펙에 맞추어 개발하는 것이 좋은 방향이라 생각합니다. PUT은 전체를 다 변경해야 하는데 실제 이렇게 리소스 전체를 변경하는 경우는 생각처럼 많지 않습니다.

감사합니다.

jaden님의 프로필 이미지
jaden

작성한 질문수

질문하기