首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在手动进行流利验证时获得相同的响应模式

如何在手动进行流利验证时获得相同的响应模式
EN

Stack Overflow用户
提问于 2021-08-19 12:45:37
回答 1查看 72关注 0票数 1

当我以正常的形式使用流利验证时,我有一个响应,但是当我尝试使用它时,我有另一个响应,如何手动获得相同的响应?

正常响应

代码语言:javascript
复制
{
    "type": "https://tools.ietf.org/html/rfc7231#section-6.5.1",
    "title": "One or more validation errors occurred.",
    "status": 400,
    "traceId": "00-dc7d6c683021ab4e8b3e2db42748e569-ec9d9967213d614c-00",
    "errors": {
        "LicensePlate": [
            "'License Plate' não pode ser nulo."
        ]
    }
}

手册

代码语言:javascript
复制
public ActionResult<ResponseUpdateLeadVehicleDTO> ChangeLeadPlate1(int id, [CustomizeValidator(Skip = true)]RequestUpdateLeadVehicleDTO request)
{    
  if (!validation.IsValid)
  {
    validation.AddToModelState(ModelState, null);
    return BadRequest(ModelState);
  }
}

响应

代码语言:javascript
复制
{
    "LicensePlate": [
        "'License Plate' não pode ser nulo."
    ]
}
EN

回答 1

Stack Overflow用户

发布于 2021-08-20 11:33:12

在贴出问题后马上找到了答案。感谢在asp.net内核3.1中向模型状态添加错误并返回坏请求的凯文·史密斯

我们需要将ApiBehaviorOptions注入到我们的操作中,这些选项用于描述api应该如何行为。其中一个选项是在模型状态无效时从api创建响应的工厂,这称为InvalidModelStateResponseFactory.。我们可以用ControllerContext调用这个工厂,这将给我们返回一个IActionResult,在这个IActionResult中我们可以返回操作。

代码语言:javascript
复制
public IActionResult ChangeLeadPlate1(int id,
  [CustomizeValidator(Skip = true)] RequestUpdateLeadVehicleDTO request,
  [FromServices] IOptions<ApiBehaviorOptions> apiBehaviorOptions)
{   
  if (!ModelState.IsValid)
    return apiBehaviorOptions.Value.InvalidModelStateResponseFactory(ControllerContext);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68848147

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档