ASP.NET 核心:BindRequired 和适当的错误

ASP.NET Core: BindRequired and appropriate error

我有以下API方法:

    [HttpPut]
    public async Task<IActionResult> SetToken([FromQuery, BindRequired]string token)
    {

因此,如我们所见,token 是必需的。

尝试在没有 token 的情况下调用方法:

PUT api/profile/SetToken

我们得到以下 json 格式的响应:

{ "token":[ "A value for the 'token' property was not provided." ] }

但我想得到另一种格式,像这样(这是我们项目的统一格式):

{
  "error": {
    "code": "string",
    "message": "string",
    "target": "string",
    "details": [
      {
        "code": "string",
        "message": "string",
        "target": "string"
      }
    ],
    "innererror": {
      "code": "string"
    }
  }
}

如何配置BindRequired这样的方式?

Afaik 没有构造函数,需要 Error-message,所以无法自定义错误。正如Docs中提到的,Error被写入了ModelState。

您可以做的是使用构造函数编写您自己的自定义 BindRequired-Attribute,它接受 Error-Message 并将其写入响应。