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 并将其写入响应。
我有以下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 并将其写入响应。