【问题标题】: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&lt;Customer&gt; 替换为从该基础类型派生的 AbstractValidator&lt;Customer&gt; 即可,您可以在基础 DTO 上执行所需的任何验证。 虽然我认为您的应用程序上有一些 api 不需要参数。

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

希望对您有所帮助...

【讨论】:

    猜你喜欢
    • 2012-03-20
    • 2016-12-22
    • 1970-01-01
    • 2022-10-07
    • 2020-11-15
    • 2013-02-17
    • 2017-05-20
    • 2019-04-10
    • 2022-01-27
    相关资源
    最近更新 更多