우리가 구현한 update와 replace 함수는 용도는 비슷하지만 구현 방식이 다릅니다. update(PATCH)는 기존 값은 유지하면서 새 값을 덮어 씌우는 반면, replace(PUT)은 Request Body로 받은 값이 id를 제외한 모든 값을 대체합니다.
직접 한번 호출해 볼까요? 다음 요청을 Postman으로 실행하세요.
# 요청 PATCH http://localhost:4000/api/posts/1 { "title": "변경됨" } # 결과 { "id": 1, "title": "변경됨", "body": "내용" }
PATCH로 했을 때는 기존 body 내용을 유지하며, Request Body로 전달한 title 값만 변경했습니다. 반면 PUT으로 하면 어떨까요?
# 요청 PUT http://localhost:4000/api/posts/1 { "title": "변경됨" } # 결과 { "id": 1, "title": "변경됨" }
PUT 메서드를 사용하니 기존 body가 사라져 버렸습니다. 따라서 포스트 수정 API를 PUT으로 구현해야 할 때는 모든 필드가 다 있는지 검증하는 작업이 필요합니다.