코딩일상
REST API의 put 과 patch 는 어떤 차이점 본문
REST API의 put 과 patch 는 어떤 차이점이 있을까요?
HTTP Method 중에 PUT와 PATCH는 리소스의 업데이트를 의미한다.
리소스를 업데이트 한다는 점에서는 같은 역할을 하는 메소드처럼 보이지만
두개의 요청에는 약간의 차이가 있다.
PUT : 리소스의 모든 것을 업데이트 한다.
PATCH : 리소스의 일부를 업데이트 한다.
예를 보면서 같이이해
아래와 같은 회원이라는 리소스가 있다.
회원 (member) | 1 |
이름 (name) | 애용이 |
나이 (age) | 10 |
성별 (gender) | M |
아래와 같은 요청을 보내면
PUT /members/1
{
name : "홍길동",
age : 19,
gender : "M"
}
회원 (member) | 1 |
이름 (name) | 홍길동 |
나이 (age) | 19 |
성별 (gender) | M |
위와 같이 변한다.
이번에는 나이와 성별를 빼고 요청을 보내면
PUT /members/1
{
name : "김길순"
}
회원 (member) | 1 |
이름 (name) | 김길순 |
나이 (age) | |
성별 (gender) |
보내지지 않은 값에 대해서는 null 값으로 변하는 것이다.
다시 아래와 같은 회원이라는 리소스가 있다.
회원 (member) | 1 |
이름 (name) | 애용이 |
나이 (age) | 10 |
성별 (gender) | M |
아래와 같은 요청을 보냈을때
PATCH /members/1
{
name : "김길순"
}
회원 (member) | 1 |
이름 (name) | 김길순 |
나이 (age) | 10 |
성별 (gender) | M |
요청에 포함되어 있는 부분만 변경이 된다는 차이점이 있다.
물론 이 위의 경우는 개발자가 구현하기 나름이지만 이런식으로 구현하는 것을 권장한다.
어떤경우에 각각의 기능을 사용하면 좋을까??
PUT요청은 기존 값을 유지하면서 새 값을 덮어 씌웁니다.
2가지의 예시에 따라 PUT을 사용할지 PATCH 를 사용할지 나뉠수 있습니다.
1. 유저가 포스트를 좋아요 클릭했을 경우(PUT)
좋아요관련 Like 엔티티가 존재한다고 치면
클라이언트에서 액션을 받을 때 articleId(어떤 게시물에 대한 건지),
userId(누가 좋아요를 한건지), 그리고 type(좋아요/싫어요) 이 세가지 정보가 모두 필요합니다.
유저가 처음으로 좋아요(혹은 싫어요)를 눌렀다면, 생성이 되어야할 것이고,
기존에 누른 적이 있다면 다른 타입으로 토글(수정) 되거나, 취소가 되어야 합니다.
즉 업데이트를 할경우 엔티티의 모든 정보가 필요하는 경우 PUT을 사용하는것이 좋아보인다.
2. 회원 정보를 수정하는경우( PATCH)
이와 반대로 회원 정보를 수정하는 경우는 크게 nickname을 많이 수정을 합니다.
즉 이 경우에는 모든 정보가 필요가 없습니다. id값만 가지고 있다면 이 회원이 누구인지 찾을 수 있고
그리고 바꿀 nickname만 가져와서 nickname을 바꿔주면 되기 때문에 이경우에는 PATCH를 사용하는 것이 좀더 바람직해보인다.
레퍼런스
HTTP 메소드 PUT , PATCH 차이 - 삽질중인 개발자
HTTP Method 중에 PUT와 PATCH는 리소스의 업데이트를 의미한다. 리소스를 업데이트 한다는 점에서는 같은 역할을 하는 메소드처럼 보이지만 두개의 요청에는 약간의 차이가 있다. PUT : 리소스의 모든
programmer93.tistory.com
restAPI의 put 과 patch의 차이점?
제가 알기론 PUT과 PATCH는 둘다 update작업을 할때 사용하는 RestAPI라고 알고있습니다.그 차이점이 궁금해서 이번 포스트를 쓰게 되었습니다.쉽게 설명을 하면 Patch요쳥은 자원에 대한 부분적인 수
velog.io
'개발 공부 > Node.js' 카테고리의 다른 글
[Node.js] 메모리 누수 총 정리(1) (0) | 2024.03.12 |
---|---|
[Node.js] node profiling 하기 (0) | 2024.03.04 |
서버 부하 테스트 Artillery (0) | 2022.10.03 |
Sequelize 알고 쓰자 장단점 (0) | 2022.09.16 |
Request param/query/ body 역할 및 차이점 (0) | 2022.07.27 |