3. CRUD 기능

3-3. HttpPOST 작업

이 섹션에서는 API에서 새로운 Plant 리소스를 생성하는 방법을 다룹니다.

이 과정은 HTTP POST 요청을 사용하여 데이터 저장소에 새 Plant를 추가하는 방법을 설명합니다.

  1. HttpPOST 엔드포인트 생성:
    • 새 리소스 생성을 위해 HttpPost 어트리뷰트를 사용하여 CreatePlant 메서드를 정의합니다. 이 메서드는 PlantDTO 객체를 매개변수로 받아 처리합니다.
  2. 데이터 검증 및 추가:
    • 전달받은 PlantDTO 객체의 유효성을 검증합니다. 예를 들어, 객체가 null이거나, ID가 0이 아닌 경우에는 적절한 HTTP 상태 코드(BadRequest 또는 InternalServerError)를 반환합니다.유효성 검증 후, PlantStorePlantList에 새로운 PlantDTO 객체를 추가합니다.
  3. 응답 유형 문서화:
    • ProducesResponseType 어트리뷰트를 사용하여 가능한 응답 유형(200 OK, 400 Bad Request, 500 Internal Server Error)을 문서화합니다.
  4. 테스트 및 검증:
    • Swagger UI를 통해 CreatePlant 엔드포인트를 테스트합니다. 새로운 Plant 정보를 입력하고, API가 새로운 ID를 할당하여 반환하는지 확인합니다.애플리케이션을 재시작하면 임시 데이터 저장소에 저장된 데이터는 초기화됩니다. 이는 실제 데이터베이스를 사용하지 않고 API의 기본 동작을 학습하기 위한 임시 방편입니다.
  5. 실습 예시:
    • 위 코드는 새로운 Plant를 생성하고, 생성된 Plant 정보를 반환하는 CreatePlant 메서드의 구현 예시입니다.

[HttpPost]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
public ActionResult<PlantDTO> CreatePlant([FromBody] PlantDTO plantDTO)
{
    if (plantDTO == null)
    {
        return BadRequest();
    }
​
    if (plantDTO.Id > 0)
    {
        return StatusCode(StatusCodes.Status500InternalServerError);
    }
​
    // ID 할당 및 PlantList에 추가 로직...
    plantDTO.Id = PlantStore.PlantList.OrderByDescending(u => u.Id).FirstOrDefault().Id + 1;
    PlantStore.PlantList.Add(plantDTO);
​
    return Ok(plantDTO);
}

이 섹션은 API에서 새 리소스를 생성하는 과정과 관련된 주요 개념과 단계를 설명하며, 데이터 검증, 상태 코드 반환, 그리고 Swagger를 통한 API 문서화 및 테스트 방법을 제공합니다.

HTTP POST 요청 Swegger

프로젝트 리소스

https://github.com/kimdaewoong2022/MorePlants_WebAPI/tree/d5ac8deb85dcb2c21c6dd4efcd7bf72b8357a92c