본문 바로가기
공부/자료조사

restAPI의 put 과 patch 는 어떤 차이점이 있을까요?

by 고구밍 2022. 3. 26.

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