
PUT→ HTTP의 요청 메소드 중 PUT 은 모든 리소스를 교체 한다.
→ 요청 본문에 포함되지 않은 데이터들은 기본값으로 설정되거나 모두 제거된다.
→ 리소스의 모든 속성을 명시적으로 지정하여 상태 를 완전히 재정의할 수 있다.
PUT 요청 예시// 현재 JSON
{
"id": 1,
"name": "Tom",
"age": 20,
"color": "black"
}
// `PUT /dogs/1` 요청 본문
{
"id": 1,
"name": "Jerry",
"age": 10,
"color": "white"
}
위 JSON을 보면 id 가 1 인 강아지(Dogs) 의 모든 속성을 새 속성으로 교체(PUT) 하는 것을 알 수 있다.
→ 기존 리소스에 제공되지 않은 속성은 모두 기본값으로 설정 혹은 제거 된다.
NestJS 에서의 PUT 처리 예시import { Controller, Put, Body, Param } from "@nestjs/common";
@Controller('dogs')
export class DogsController{
@Put(':id')
replaceDog(@Param('id') id: string, @Body() replaceDogDto: any): string{
return `아이디가 ${id}인 강아지의 정보를 모두 변경되었습니다. 정보 : ${JSON.stringify(replaceDogDto)}`
}
}
PATCH→ HTTP의 요청 메소드 중 PATCH 는 일부 리소스만 수정한다.
→ PUT 과 달리 요청에 포함된 리소스만 변경한다.
→ 작은 데이터 변환에 유리하며, 전송하는 데이터의 양을 줄일 수 있다.
PATCH 요청 예시// 현재 JSON
{
"id": 1,
"name": "Tom",
"age": 20,
"color": "black"
}
// `PUT /dogs/1` 요청 본문
{
"color": "white"
}
PUT 과 달리 id 가 1 인 Tom 의 리소스 중 color 필드만 white 로 변경된다. 또한, 다른 필드는 변경되지 않는다.
NestJS 에서의 PATCH 처리 예시import { Controller, Put, Body, Param } from "@nestjs/common";
@Controller('dogs')
export class DogsController{
@Patch(':id')
updateDog(@Param('id') id: string, @Body() updateDogDto: any): string{
return `아이디가 ${id}인 강아지의 정보가 업데이트 되었습니다. 정보 : ${JSON.stringify(updateDogDto)}`
}
}
PUT 요청 : 모든 데이터를 변경하며, 요청에 포함되지 않은 필드는 제거되거나 기본값으로 설정된다.PATCH 요청 : 일부 데이터만 변경하며, 요청에 포함된 데이터만 변경한다.