3. CRUD 기능

3-4. CreatedAtRoute

이 섹션에서는 API에서 리소스를 생성한 후 생성된 리소스의 URL을 반환하는 방법을 다룹니다.

이는 CreatedAtRoute 메서드를 사용하여 구현됩니다.

  1. CreatedAtRoute의 목적:
    • 새 리소스 생성 시 200 OK 대신 201 Created 상태 코드와 함께 생성된 리소스의 위치(URL)를 클라이언트에게 제공합니다. 이를 통해 클라이언트는 새로 생성된 리소스에 즉시 접근할 수 있습니다.
  2. CreatedAtRoute 구현:
    • CreatedAtRoute 메서드는 세 가지 주요 매개변수를 받습니다: 라우트 이름, 라우트 매개변수(여기서는 새 리소스의 ID), 반환될 객체(여기서는 PlantDTO 객체).CommentGetPlant 엔드포인트에 명시적인 이름("GetPlant")을 부여하고, 이 이름을 CreatedAtRoute의 첫 번째 매개변수로 사용합니다.
  3. 이 방법을 통해 API는 리소스 생성 후 클라이언트에게 추가적인 정보를 제공할 수 있으며, 클라이언트는 제공된 URL을 통해 생성된 리소스를 즉시 확인할 수 있습니다. CreatedAtRoute의 사용은 API의 사용성을 향상시키고, 클라이언트와의 상호작용을 더욱 효율적으로 만듭니다.
  4. 실습 예시:
    • 위 코드는 새로운 Plant를 생성하고, 생성된 Plant의 위치(URL)를 반환하는 CreatePlant 메서드의 구현 예시입니다. GetPlant 엔드포인트에 "GetPlant"라는 이름을 부여하고, 이를 CreatedAtRoute에서 참조합니다.
[HttpPost]
[ProducesResponseType(StatusCodes.Status201Created)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
public ActionResult<PlantDTO> CreatePlant([FromBody] PlantDTO plantDTO)
{
    // Plant 생성 로직...
​
    //3-4. CreatedAtRoute
    //return Ok(plantDTO);
    return CreatedAtRoute("GetPlant", new { id = plantDTO.Id }, plantDTO);
}
​
[HttpGet("{id}", Name = "GetPlant")]
public ActionResult<PlantDTO> GetPlant(int id)
{
    // Plant 조회 로직...
}

이 방법을 통해 API는 리소스 생성 후 클라이언트에게 추가적인 정보를 제공할 수 있으며, 클라이언트는 제공된 URL을 통해 생성된 리소스를 즉시 확인할 수 있습니다. CreatedAtRoute의 사용은 API의 사용성을 향상시키고, 클라이언트와의 상호작용을 더욱 효율적으로 만듭니다.

프로젝트 리소스

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