使用流畅的验证来验证 HTTP GET 请求 .net core

Jam*_*Coy 1 asp.net validation fluentvalidation asp.net-core

我集成了流畅的验证,对于 POST 请求模型验证来说效果很好

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

public async Task<IActionResult> GetV2Async(Constants.Status status, int? cafeId)
Run Code Online (Sandbox Code Playgroud)

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

 public CafeAddressRequestValidator()
    {
        RuleFor(x => x.Name).NotEmpty().WithMessage("Name is required");
        RuleFor(x => x.AddressLine1).NotEmpty().WithMessage("AddressLine1 is required");
    }
Run Code Online (Sandbox Code Playgroud)

Ren*_*ena 5

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

模型:

public class Status
{
    public string Name { get; set; }
    public string AddressLine1 { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

控制器:

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

启动.cs:

services.AddControllers()
       .AddFluentValidation(fv => fv.RegisterValidatorsFromAssemblyContaining<CafeAddressRequestValidator>());
Run Code Online (Sandbox Code Playgroud)

自定义 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");
    }
}
Run Code Online (Sandbox Code Playgroud)

结果: 在此输入图像描述

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

在此输入图像描述