添加详细消息到 ASP.NET Core 3.1 标准 JSON BadRequest 响应
Add detail message to ASP.NET Core 3.1 standard JSON BadRequest response
我的 ASP.NET Core 3.1 应用程序中有一个控制器,在其中一种情况下 returns BadRequest()
。
默认情况下,它会产生 json 响应:
{
"type": "https://tools.ietf.org/html/rfc7231#section-6.5.1",
"title": "Bad Request",
"status": 400,
"traceId": "|492dbc28-4cf485d536d40917."
}
太棒了,但我想添加一个带有特定消息的 detail
字符串值。
当我returnBadRequest("msg")
时,响应是纯文本msg
。
当我这样做时 BadRequest(new { Detail = "msg" })
,响应是 json:
{
"detail": "msg"
}
哪个更好,但我也想保留原始 json 数据。
我的目标是return这种回复:
{
"type": "https://tools.ietf.org/html/rfc7231#section-6.5.1",
"title": "Bad Request",
"detail": "msg",
"status": 400,
"traceId": "|492dbc28-4cf485d536d40917."
}
有办法做到这一点吗?
获取类型化对象中的 Json 数据并发回此响应。
class MyClass
{
public string type { get; set; }
public string title { get; set; }
public string status { get; set; }
public string traceId { get; set; }
public string detail { get; set; }
}
使用此 class 转换您的 Json 数据 在 detail
字段中键入并添加详细信息。
var obj = JsonConvert.DeserializeObject<MyClass>(yourJson);
obj.detail = "msg";
ControllerBase.Problem 方法非常适合这种情况。这是一个产生所需响应的示例:
public IActionResult Post()
{
// ...
return Problem("msg", statusCode: (int)HttpStatusCode.BadRequest);
}
为了完整起见,这里有一个输出示例:
{
"type": "https://tools.ietf.org/html/rfc7231#section-6.5.1",
"title": "Bad Request",
"status": 400,
"detail": "msg",
"traceId": "|670244a-4707fe3038da8462."
}
我的 ASP.NET Core 3.1 应用程序中有一个控制器,在其中一种情况下 returns BadRequest()
。
默认情况下,它会产生 json 响应:
{
"type": "https://tools.ietf.org/html/rfc7231#section-6.5.1",
"title": "Bad Request",
"status": 400,
"traceId": "|492dbc28-4cf485d536d40917."
}
太棒了,但我想添加一个带有特定消息的 detail
字符串值。
当我returnBadRequest("msg")
时,响应是纯文本msg
。
当我这样做时 BadRequest(new { Detail = "msg" })
,响应是 json:
{
"detail": "msg"
}
哪个更好,但我也想保留原始 json 数据。
我的目标是return这种回复:
{
"type": "https://tools.ietf.org/html/rfc7231#section-6.5.1",
"title": "Bad Request",
"detail": "msg",
"status": 400,
"traceId": "|492dbc28-4cf485d536d40917."
}
有办法做到这一点吗?
获取类型化对象中的 Json 数据并发回此响应。
class MyClass
{
public string type { get; set; }
public string title { get; set; }
public string status { get; set; }
public string traceId { get; set; }
public string detail { get; set; }
}
使用此 class 转换您的 Json 数据 在 detail
字段中键入并添加详细信息。
var obj = JsonConvert.DeserializeObject<MyClass>(yourJson);
obj.detail = "msg";
ControllerBase.Problem 方法非常适合这种情况。这是一个产生所需响应的示例:
public IActionResult Post()
{
// ...
return Problem("msg", statusCode: (int)HttpStatusCode.BadRequest);
}
为了完整起见,这里有一个输出示例:
{
"type": "https://tools.ietf.org/html/rfc7231#section-6.5.1",
"title": "Bad Request",
"status": 400,
"detail": "msg",
"traceId": "|670244a-4707fe3038da8462."
}