使用 fluent validation .net core 验证 HTTP GET 请求

Validate HTTP GET requests with fluent validation .net core

我集成了流畅的验证,可以很好地用于 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");
    }

这是一个像下面这样的工作演示:

型号:

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&status.AddressLine1=sdf: