이 섹션에서는 API 엔드포인트에서 다양한 HTTP 상태 코드를 반환하는 방법을 다룹니다.
- Action Result 사용:
- API에서는
IEnumerable<PlantDTO>
와 같은 구체적인 반환 유형 대신ActionResult
을 사용하여 다양한 상태 코드와 함께 데이터를 반환할 수 있습니다. ActionResult는 IActionResult 인터페이스의 구현체로, 다양한 반환 유형을 가능하게 합니다.
- API에서는
- 상태 코드 반환:
- 성공적인 요청의 경우
200 OK
와 함께 데이터를 반환합니다. 이는Ok()
메서드를 사용하여 구현할 수 있습니다.유효하지 않은 요청(예: ID가 0인 경우)에는400 Bad Request
를 반환합니다.Comment찾을 수 없는 리소스에 대해서는404 Not Found
를 반환합니다. 이는 요청된 ID에 해당하는 Plant가 없는 경우에 해당합니다.
- 성공적인 요청의 경우
- 테스트 및 검증:
- Swagger UI를 통해 엔드포인트를 테스트하면, 입력된 ID 값에 따라
400 Bad Request
,404 Not Found
, 또는200 OK
와 함께 데이터를 반환하는 것을 확인할 수 있습니다.
- Swagger UI를 통해 엔드포인트를 테스트하면, 입력된 ID 값에 따라
- 실습 예시:
- 위 코드는 ID를 매개변수로 받아 특정 Plant를 조회하는 엔드포인트에서 다양한 상태 코드를 반환하는 방법을 보여줍니다. 유효하지 않은 ID, 존재하지 않는 리소스, 성공적인 조회 각각에 대해 적절한 HTTP 상태 코드를 반환합니다.
[HttpGet]
public ActionResult<IEnumerable<PlantDTO>> GetPlants()
{
return Ok(PlantStore.PlantList);
}
[HttpGet("id:int")]
public ActionResult<PlantDTO> GetPlant(int id)
{
if (id == 0)
{
return BadRequest();
}
var plant = PlantStore.PlantList.FirstOrDefault(u=>u.Id == id);
if (plant == null)
{
return NotFound();
}
return Ok(plant);
}
이 방법을 통해 API는 클라이언트에게 요청의 성공 여부와 실패의 원인을 명확하게 알릴 수 있으며, 클라이언트는 이 정보를 바탕으로 적절한 처리를 할 수 있습니다. 상태 코드를 효과적으로 사용하는 것은 RESTful API 설계의 중요한 부분입니다.
프로젝트 리소스
https://github.com/kimdaewoong2022/MorePlants_WebAPI/tree/ae56cd5c00ba6c9ed38de5fbd8498e273d0bb93d