【问题标题】:How can i add a global validation for a ASP.NET Core web api?如何为 ASP.NET Core Web api 添加全局验证?
【发布时间】:2020-03-11 09:20:19
【问题描述】:
可以说,我们有多个具有(电子邮件、姓名、地址)等属性的模型。
除了这些必填字段之外,电子邮件接受 @ 而地址接受 # & 等等。
所以我想要一个应用程序级别的验证,它会限制所有的特殊字符。而对于有一些异常的属性,会写异常。
我是 web api 的新手,希望在 startup.cs 的某个地方实现它
任何建议都会有所帮助。
【问题讨论】:
标签:
c#
asp.net
asp.net-mvc
asp.net-core
asp.net-web-api
【解决方案1】:
您可以使用 FluentValidation。 Click Here
用法:
public class MyValidator: AbstractValidator<Customer> {
public CustomerValidator() {
RuleFor(x => x.Surname).NotEmpty();
RuleFor(x => x.Forename).NotEmpty().WithMessage("Please specify a first name");
RuleFor(x => x.Discount).NotEqual(0).When(x => x.HasDiscount);
RuleFor(x => x.Address).Length(20, 250);
RuleFor(x => x.Postcode).Must(BeAValidPostcode).WithMessage("Please specify a valid postcode");
}
private bool BeAValidPostcode(string postcode) {
// custom postcode validating logic goes here
}
}
在您的情况下,您只需将 AbstractValidator<Customer> 替换为从该基础类型派生的 AbstractValidator<Customer> 即可,您可以在基础 DTO 上执行所需的任何验证。
虽然我认为您的应用程序上有一些 api 不需要参数。
对我来说,这是最有效和最干净的方式。
希望对您有所帮助...