restAPI의 put 과 patch 는 어떤 차이점이 있을까요?
어떤 경우에 사용하면 좋을까요?
- 장민우님 정리 내용
정의
Put
: 요청 페이로드를 사용해 새로운 리소스를 생성하거나, 대상 리소스를 나타내는 데이터를 대체한다
Patch
: 리소스의 부분적인 수정을 할 때에 사용된다.
→정의로만은 차이를 찾기가 힘드나 크게 3가지 차이점을 말할 수 있다.
차이점
1) Update 방식의 차이
-PUT : update를 시행할 때 자원의 모든 상태의 값을 보내 주어야 한다.
put(id==1)
<aside> 💡 {
“name” : “바다”,
“grade” : 5
}
</aside>
<aside> 💡 {
“name” : “바다”,
}
</aside>
⇒ 보내지 않은 값은 null로 대체된다. 정의처럼 데이터 자체를 대체한다.
patch(id ==1)
<aside> 💡 {
“name” : “바다”,
“grade” : 5
}
</aside>
<aside> 💡 {
“name” : “바다”,
}
</aside>
⇒ 보내지 않은 값은 그대로 유지된다
2) 요청한 URI에 자원이 존재하지 않을 때
put
<aside> 💡 {
“name” : “바다”,
“num” : 20
}
</aside>
⇒ 새로운 자원을 생성한다.
Patch
<aside> 💡 {
“name” : “바다”,
“num” : 20
}
</aside>
⇒새로운 자원을 생성하지 않는다.(서버는 오류를 응답에 보낸다.)
3)멱등성 관점
멱등성 : 동일한 요청을 한 번 보내는 것과 여러 번 연속으로 보내는 것이 같은 효과를 지니고, 서버의 상태도 동일하게 남을 떄, 해당 HTTP메서드가 멱등성을 가졌다고 한다.
즉. 같은 요청을 여러번 보냈을 때 차이를 보인다.
id==3
{
num: {
type: $inc,
value: 1
}
}
위 요청을 두 번 보내면
Patch
위와 같이 다른 결과가 나타난다.
즉 Patch를 Put과 동일하게 사용하면 멱등성을 가지지만 Patch는 위와같이 동일하지 않은 결과가 나오게 설계할 수 있다.
'공부 > 자료조사' 카테고리의 다른 글
Maven vs Gradle (0) | 2022.03.29 |
---|---|
Spring vs Spring Boot (0) | 2022.03.28 |
DNS의 원리 (0) | 2022.03.27 |
Controller, Service, Repository 가 무엇인가요? (0) | 2022.03.24 |
JPA 가 무엇인가요? (0) | 2022.03.24 |