-
[ASP.NET Core] WebApi with Swagger - 4. DataAnnotations을 통한 유효성 검사(Vaildation) 응답.NET/ASP.NET Core 2023. 2. 16. 23:13반응형
System.ComponentModel.DataAnnotations
네임스페이스에 속한 특성(Attribute)를 통해 요청값에 대한 유효성 처리를 적용할 수 있다./// <summary> /// 입력된 일수만큼 날씨 데이터를 제공합니다. /// </summary> /// <param name="cnt" example="7">입력일수</param> /// <returns></returns> [HttpGet("{cnt}", Name = "GetWeatherForecastByCount")] public IEnumerable<WeatherForecast> Get( [Required][Range(1, 10)] int cnt) { // 이제 cnt 값은 1~10 사이의 값이 필수적으로 들어와야 한다. return Enumerable.Range(1, cnt).Select(index => new WeatherForecast { Date = DateTime.Now.AddDays(index), TemperatureC = Random.Shared.Next(-20, 55), Summary = Summaries[Random.Shared.Next(Summaries.Length)] }) .ToArray(); }
Required
속성 적용시 swagger 문서상에 필수요소임을 표기하게 되며,Range
설정에 따라 1~10 사이의 값만 받을 수 있도록 Swagger 문서가 동작을 제한한다.Swagger가 아닌 Postman 이나 웹 브라우저에서 직접 요청해보면 400 Bad Request 상태값과 함께 ASP.NET Core가 기본 제공하는 오류 응답 메시지를 받을 수 있게 된다.
{ "type":"https://tools.ietf.org/html/rfc7231#section-6.5.1", "title":"One or more validation errors occurred.", "status":400, "traceId":"00-3a52ba9c203bfb591d8be304bf74b62a-28b2b7d5d830fd48-00", "errors": { "cnt":["The field cnt must be between 1 and 10."] } }
에러 메시지를 직접 설정할 수도 있다. [Range(1, 10)]에 아래와 같이 ErrorMessage를 추가하면 된다.
[Range(1, 10, ErrorMessage = "1~10 까지의 값만 사용할 수 있습니다.")]
{ "type":"https://tools.ietf.org/html/rfc7231#section-6.5.1", "title":"One or more validation errors occurred.", "status":400, "traceId":"00-12707f80e6349efce7ff2c00a05e2a9c-10a7c1ba2ce2f903-00", "errors": { "cnt":["1~10 까지의 값만 사용할 수 있습니다."] } }
이외에도 문자열길이를 제한하는
StringLength
, 정규식으로 판별하는RegularExpression
등이 있다. 관련 사항은 하단의 참조 및 출처를 통해 확인할 수 있다.참조 및 출처
System.ComponentModel.DataAnnotations 네임스페이스 | Microsoft Learn반응형'.NET > ASP.NET Core' 카테고리의 다른 글
[ASP.NET Core] AddSingleton(), AddScoped(), AddTransient() 차이점 - 2 (0) 2023.03.15 [ASP.NET Core] WebApi with Swagger - 5. enum (0) 2023.02.18 [ASP.NET Core] WebApi with Swagger - 3. 응답 명세(ProducesResponseType) (0) 2023.02.15 [ASP.NET Core] WebApi with Swagger - 2. 예제(example) 적용 (0) 2023.02.14 [ASP.NET Core] WebApi with Swagger - 1. API 설명 추가하기 - 3 (0) 2023.02.12