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