이 섹션에서는 API에서 리소스를 업데이트하는 방법 중 하나인 HTTP PUT 요청을 다룹니다. PUT 요청은 주로 전체 리소스를 업데이트할 때 사용됩니다.
- Http PUT 엔드포인트 구현:
HttpPut
어트리뷰트를 사용하여UpdatePlant
메서드를 정의합니다. 이 메서드는 업데이트할 Plant의 ID와 업데이트할 내용을 담은PlantDTO
객체를 매개변수로 받습니다.클라이언트로부터 받은 ID와PlantDTO
의 ID가 일치하는지 검증하고, 일치하지 않으면BadRequest
를 반환합니다.
- 업데이트 로직 구현:
PlantStore
에서 해당 ID를 가진 Plant를 찾고, 찾은 Plant의 속성을PlantDTO
로부터 받은 값으로 업데이트합니다.업데이트가 성공적으로 완료되면NoContent
를 반환합니다.
- 응답 유형 문서화:
ProducesResponseType
어트리뷰트를 사용하여 가능한 응답 유형(400 Bad Request
,204 No Content
)을 문서화합니다.
- 테스트 및 검증:
- Swagger UI를 통해
UpdatePlant
엔드포인트를 테스트합니다. 업데이트할 Plant의 ID와 새로운 데이터를 제공하고, 업데이트 후NoContent
상태 코드를 반환하는 것을 확인할 수 있습니다.
- Swagger UI를 통해
- 실습 예시:
- 위 코드는 ID를 기반으로 특정 Plant를 업데이트하는
UpdatePlant
메서드의 구현 예시입니다.
- 위 코드는 ID를 기반으로 특정 Plant를 업데이트하는
[HttpPut("{id:int}", Name = "UpdatePlant")]
[ProducesResponseType(StatusCodes.Status204NoContent)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
public IActionResult UpdatePlant(int id, [FromBody] PlantDTO plantDTO)
{
if (plantDTO == null || id != plantDTO.Id)
{
return BadRequest();
}
var plant = PlantStore.PlantList.FirstOrDefault(u => u.Id == id);
plant.Name = plantDTO.Name;
plant.Size = plantDTO.Size;
plant.Occupancy = plantDTO.Occupancy;
return NoContent();
}
이 방법을 통해 API에서 리소스의 전체 업데이트를 효과적으로 처리할 수 있습니다. 다음 섹션에서는 리소스의 일부만을 업데이트하는 HTTP PATCH 요청에 대해 다룰 예정입니다. PATCH 요청은 리소스의 일부 속성만 변경할 때 사용되며, PUT 요청보다 더 세밀한 업데이트를 가능하게 합니다.
프로젝트 리소스
https://github.com/kimdaewoong2022/MorePlants_WebAPI/tree/bc363e252e78fac92c53e8b82daf4f834e11d716