PUT과 PATCH

Daehyeon Yun·2024년 8월 7일

💡HTTP 요청 메소드 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을 보면 id1강아지(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)}`
	}
}

💡HTTP 요청 메소드 PATCH

→ HTTP의 요청 메소드 중 PATCH일부 리소스만 수정한다.

PUT 과 달리 요청에 포함된 리소스만 변경한다.

→ 작은 데이터 변환에 유리하며, 전송하는 데이터의 양을 줄일 수 있다.

⭐ PATCH 요청 예시

// 현재 JSON
{
	"id": 1,
	"name": "Tom",
	"age": 20,
	"color": "black"
}

// `PUT /dogs/1` 요청 본문
{
	"color": "white"
}

PUT 과 달리 id1Tom 의 리소스 중 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 요청 : 일부 데이터만 변경하며, 요청에 포함된 데이터만 변경한다.
profile
열심히 살아야지

0개의 댓글