如何为ASP添加全局验证.NET核心web api



比方说,我们有多个模型,其属性包括(电子邮件、名称、地址(。除了这些必填字段外,电子邮件接受@,而地址接受#&等等。

所以我想要一个应用程序级别的验证,它将限制所有的特殊字符。对于有异常的属性,将编写一个异常。

我是web api的新手,希望在startup.cs的某个地方实现它任何建议都会有帮助。

您可以使用FluentValidation。点击此处

用法:

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,但没有参数

对我来说,这是最有效、最干净的方式。

希望有帮助。。。

最新更新