이 섹션에서는 API에서 리소스를 생성할 때 PlantDTO
에 대한 유효성 검사를 구현하는 방법을 다룹니다. .NET Core의 데이터 어노테이션을 사용하여 모델에 유효성 검사 규칙을 적용합니다.
- 데이터 어노테이션 사용:
PlantDTO
모델에Required
와MaxLength
어노테이션을 추가하여,Name
필드가 필수이며 최대 길이가 30자임을 명시합니다.
- 유효성 검사 실행:
APIController
어트리뷰트를 사용하면, .NET Core는 자동으로ModelState.IsValid
를 검사하여 데이터 어노테이션에 정의된 유효성 검사 규칙을 적용합니다.Comment유효성 검사에 실패하면, API는400 Bad Request
와 함께 오류 메시지를 반환합니다.
- APIController 어트리뷰트의 중요성:
APIController
어트리뷰트는 유효성 검사 실패 시 자동으로BadRequest
를 반환하는 등의 추가 기능을 제공합니다. 이 어트리뷰트 없이는ModelState.IsValid
를 수동으로 검사하고 처리해야 합니다.
- 테스트 및 검증:
- Swagger UI를 통해
CreatePlant
엔드포인트를 테스트하면, 유효하지 않은 입력(예:Name
필드가 비어 있는 경우)에 대해400 Bad Request
와 오류 메시지를 반환하는 것을 확인할 수 있습니다.
- Swagger UI를 통해
- 실습 예시:
- 위 코드는
PlantDTO
에 대한 유효성 검사를 수행하고, 유효성 검사에 실패한 경우 오류 메시지와 함께BadRequest
를 반환하는 방법을 보여줍니다.
- 위 코드는
public class PlantDTO
{
public int Id { get; set; }
[Required]
[MaxLength(30)]
public string Name { get; set; }
}
[HttpPost]
[ProducesResponseType(StatusCodes.Status201Created)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
public ActionResult<PlantDTO> CreatePlant([FromBody] PlantDTO plantDTO)
{
//if (plantDTO == null)
//{
// return BadRequest(ModelState);
//}
// Plant 생성 로직...
}
이 방법을 통해 API 개발자는 입력 데이터에 대한 유효성 검사를 효과적으로 구현하고, 클라이언트에게 유용한 피드백을 제공할 수 있습니다. 데이터 어노테이션과 ModelState
의 사용은 API의 견고성과 사용자 경험을 향상시키는 데 중요한 역할을 합니다.
프로젝트 리소스
https://github.com/kimdaewoong2022/MorePlants_WebAPI/tree/140df7d6958ba481195e2ccf63ce83645537e8df