손 으로 AspNetCore WebApi 데이터 검증 의 실현 을 가르쳐 드 리 겠 습 니 다.
샤 오 밍 은 최근 에 또 문 제 를 만 났 다.샤 오 홍 은 인터페이스 에서 전송 한 데 이 터 를 검증 하고 싶 어 한다.샤 오 홍 의 요구 라면 샤 오 밍 이 무슨 말 을 하 든 만족 해 야 한다.이것 은 간단 하지 않 잖 아.
전통 검증
[HttpPost]
public async Task<ActionResult<Todo>> PostTodo(Todo todo)
{
if (string.IsNullOrEmpty(todo.Name))
{
return Ok(" ");
}
context.Todo.Add(todo);
await context.SaveChangesAsync();
return CreatedAtAction("GetTodo", new { id = todo.Id }, todo);
}
샤 오 밍 은 이렇게 쓰 여 있 는 것 을 발견 하고 많은 인터페이스 가 같은 곳 에 써 서 코드 를 비대 하 게 만 들 었 다 고 쓰 여 있다.모델 검증 사용
매개 변수 모델 에 주 해 를 달다.
namespace App001.Models
{
/// <summary>
///
/// </summary>
public class Todo
{
/// <summary>
/// ID
/// </summary>
public Guid Id { get; set; }
/// <summary>
///
/// </summary>
[Required(ErrorMessage = " ")]
public string Name { get; set; }
}
}
Postman 테스트 Name 전송 값 이 비어 있 지 않 으 면 다음 을 되 돌려 줍 니 다.
{
"type": "https://tools.ietf.org/html/rfc7231#section-6.5.1",
"title": "One or more validation errors occurred.",
"status": 400,
"traceId": "|df184e36-4e11844dfd38a626.",
"errors": {
"Name": [
" "
]
}
}
웹 API 컨트롤 러 가[Apicontroller]기능 을 가지 고 있 으 면 ModelState.IsValid 를 검사 할 필요 가 없습니다.이 경우 모델 상태 가 잘못 되면 오류 에 대한 자세 한 정 보 를 포함 한 자동 HTTP 400 응답 을 되 돌려 줍 니 다.내장 특성
[CreditCard]:속성 이 신용카드 형식 이 있 는 지 검증 합 니 다
인증 기능 을 통 해 잘못된 입력 으로 표시 할 오류 메 시 지 를 지정 할 수 있 습 니 다.예 를 들 면:
[Required(ErrorMessage = " ")]
사용자 정의 반환 메시지 형식 사용 하기두 가지 방법 이 있 습 니 다.
사용자 정의 필 터 를 사용 합 니 다
우선,ModelValidateAction FilterAttribute 필 터 를 만 듭 니 다.
public class ModelValidateActionFilterAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext context)
{
if (!context.ModelState.IsValid)
{
//
var errors = context.ModelState
.Where(e => e.Value.Errors.Count > 0)
.Select(e => e.Value.Errors.First().ErrorMessage)
.ToList();
var str = string.Join("|", errors);
//
var result = new
{
Code = 10000,
Msg = " 。",
FullMsg = str
};
context.Result = new BadRequestObjectResult(result);
}
}
}
그리고 Startup.Configure Services 는 컨트롤 러 에 필 터 를 추가 하고 기본 모델 인증 을 닫 습 니 다.또한 AddNewtonsoftJSon 도 추 가 했 습 니 다.
//
services.Configure<ApiBehaviorOptions>(opt => opt.SuppressModelStateInvalidFilter = true);
services.AddControllers(opt =>
{
//
opt.Filters.Add(typeof(ModelValidateActionFilterAttribute));
}).AddNewtonsoftJson(opt =>
{
//json
opt.SerializerSettings.ContractResolver = new DefaultContractResolver();
});
마지막 으로 반환 효 과 를 살 펴 보 자.
{
"Code": 10000,
"Msg": " 。",
"FullMsg": " 。"
}
기본 모델 검증 사용
services.Configure<ApiBehaviorOptions>(opt =>
{
opt.InvalidModelStateResponseFactory = actionContext =>
{
//
var errors = actionContext.ModelState
.Where(e => e.Value.Errors.Count > 0)
.Select(e => e.Value.Errors.First().ErrorMessage)
.ToList();
var str = string.Join("|", errors);
//
var result = new
{
Code = 10000,
Msg = " 。",
FullMsg = str
};
return new BadRequestObjectResult(result);
};
});
작은 매듭지금까지 샤 오 밍 은 데이터 검증 도 끝 냈 습 니 다.so easy 아 닙 니까?
여기 서 AspNetCore WebApi 데이터 검증 의 실현 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 AspNetCore WebApi 데이터 검증 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
부트스트랩 ASP.NET에서 설정하는 법1) _Layout.cshtml 內 link로 bootstrap 참조 2) Nuget 패키지에서 BootStrap 다운로드 3) 하단 부트스트랩 예제 사이트 참고해서 프로젝트 개발 참고 :...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.