3. CRUD 기능

3-5. ModelState 유효성 검사

이 섹션에서는 API에서 리소스를 생성할 때 PlantDTO에 대한 유효성 검사를 구현하는 방법을 다룹니다. .NET Core의 데이터 어노테이션을 사용하여 모델에 유효성 검사 규칙을 적용합니다.

  1. 데이터 어노테이션 사용:
    • PlantDTO 모델에 RequiredMaxLength 어노테이션을 추가하여, Name 필드가 필수이며 최대 길이가 30자임을 명시합니다.
  2. 유효성 검사 실행:
    • APIController 어트리뷰트를 사용하면, .NET Core는 자동으로 ModelState.IsValid를 검사하여 데이터 어노테이션에 정의된 유효성 검사 규칙을 적용합니다.Comment유효성 검사에 실패하면, API는 400 Bad Request와 함께 오류 메시지를 반환합니다.
  3. APIController 어트리뷰트의 중요성:
    • APIController 어트리뷰트는 유효성 검사 실패 시 자동으로 BadRequest를 반환하는 등의 추가 기능을 제공합니다. 이 어트리뷰트 없이는 ModelState.IsValid를 수동으로 검사하고 처리해야 합니다.
  4. 테스트 및 검증:
    • Swagger UI를 통해 CreatePlant 엔드포인트를 테스트하면, 유효하지 않은 입력(예: Name 필드가 비어 있는 경우)에 대해 400 Bad Request와 오류 메시지를 반환하는 것을 확인할 수 있습니다.
  5. 실습 예시:
    • 위 코드는 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의 견고성과 사용자 경험을 향상시키는 데 중요한 역할을 합니다.

ModelState 유효성 검사

프로젝트 리소스

https://github.com/kimdaewoong2022/MorePlants_WebAPI/tree/140df7d6958ba481195e2ccf63ce83645537e8df