Skip to content

Latest commit

 

History

History
121 lines (85 loc) · 2.74 KB

putNpatch.md

File metadata and controls

121 lines (85 loc) · 2.74 KB

PUT과 PATCH

PUT

The HTTP PUT request method creates a new resource or replaces a representation of the target resource with the request payload.

: HTTP PUT 메서드는 요청 페이로드를 사용해 새로운 리소스를 생성하거나 대상 리소스를 나타내는 데이터를 대체합니다.


PATCH

The HTTP PATCH request method applies partial modifications to a resource.

: HTTP PATCH 메소드는 리소스의 부분적인 수정을 할 때에 사용됩니다.

차이점

  PUT과 PATCH는 정의에서부터 차이점을 보인다. 아래의 설명을 보면 더 확실히 이해할 수 있을 것이다.

리소스 예시

id name value
1 a 100
2 b 200
3 c 300

1. Update 방식

1. PUT /users?id=1
{
    name: "d",
    value: 400
}

2. PUT /users?id=1
{
    name: "d"
}

  PUT의 정의에서는 새로운 리소스를 생성하거나 데이터를 대체한다고 했다. 1번의 경우 자원의 모든 상태에 새로운 값을 대입하여 보낸 요청이다. 반대로 2번name 데이터에만 새로운 값을 보낸 요청이다.

id name value
1 d 400
2 b 200
3 c 300

  1번의 경우, 새로운 자원이 기존 리소스를 대체했다.

id name value
1 d null
2 b 200
3 c 300

  하지만 2번의 경우, 보내지 않은 값이 null로 대체된다. 즉, 대상 리소스를 나타내는 데이터를 대체하는 Update 방식이다.

1. PATCH /users?id=1
{
    name: "d",
    value: 400
}

2. PATCH /users?id=1
{
    name: "d"
}

  같은 데이터로 PATCH 요청을 보내보면,

id name value
1 d 400
2 b 200
3 c 300

  1번의 경우, 보낸 값 모두 수정 되었다.

id name value
1 d 100
2 b 200
3 c 300

  2번 또힌 보내지 않은 값은 그대로 유지되고, name만 새로운 데이터로 수정됐다. 즉, 부분적인 수정을 하는 Update 방식이다.


2. 요청한 URI에 자원이 존재하지 않을 때

1. PUT /users?id=4
{
    name: "d",
    value: 400
}

2. PATCH /users?id=4
{
    name: "d",
    value: 400
}

  PUT의 경우, 새로운 자원을 생성해준다. 하지만 PATCH는 새로운 자원을 생성하지 않고 오류를 뱉어낸다.



참고자료