【问题标题】:Validate HTTP GET requests with fluent validation .net core使用流利的验证 .net 核心验证 HTTP GET 请求
【发布时间】:2020-07-15 21:34:13
【问题描述】:

我集成了流利的验证,可以很好地用于 POST 请求模型验证

但是将验证器附加到 GET 请求的最佳方法是什么?

public async Task<IActionResult> GetV2Async(Constants.Status status, int? cafeId)

我的 POST 请求的当前验证器如下所示:

 public CafeAddressRequestValidator()
    {
        RuleFor(x => x.Name).NotEmpty().WithMessage("Name is required");
        RuleFor(x => x.AddressLine1).NotEmpty().WithMessage("AddressLine1 is required");
    }

【问题讨论】:

标签: asp.net validation asp.net-core fluentvalidation


【解决方案1】:

这是一个如下所示的工作演示:

型号:

public class Status
{
    public string Name { get; set; }
    public string AddressLine1 { get; set; }
}

控制器:

[HttpGet]
public IActionResult Get(Status status, int? cafeId)
{
    if (!ModelState.IsValid)
    {
        return BadRequest(ModelState);
    }
    return Ok("Validate pass");
}

Startup.cs:

services.AddControllers()
       .AddFluentValidation(fv => fv.RegisterValidatorsFromAssemblyContaining<CafeAddressRequestValidator>());

自定义 FluentValidation:

public class CafeAddressRequestValidator : AbstractValidator<Status>
{
    
    public CafeAddressRequestValidator()
    {
        RuleFor(x => x.Name).NotEmpty().WithMessage("Name is required");
        RuleFor(x => x.AddressLine1).NotEmpty().WithMessage("AddressLine1 is required");
    }
}

结果:

如果您想通过验证,请发送如下请求:https://localhost:portNumber/yourMethod?status.name=dsfsd&amp;status.AddressLine1=sdf:

【讨论】:

  • 帮了大忙,谢谢!对不起,我以为我已经回复了延迟回复:)
猜你喜欢
  • 2018-04-06
  • 2017-06-06
  • 2021-09-13
  • 2011-12-05
  • 2017-12-06
  • 2020-10-22
  • 2019-11-03
  • 2019-02-23
  • 1970-01-01
相关资源
最近更新 更多