我正在使用 ASP.NET Core 2.2 ApiController 并且我有以下内容:
[ApiController]
public class PostController : Controller {
[HttpGet("posts")]
public async Task<IActionResult> Get() {
return BadRequest();
}
}
在这种情况下,我得到以下响应:
{
"type": "https://tools.ietf.org/html/rfc7231#section-6.5.1",
"title": "Bad Request",
"status": 400,
"traceId": "0HLMFSL0C7SKB:00000001"
}
但是如果我返回一些数据如下:
[ApiController]
public class PostController : Controller {
[HttpGet("posts")]
public async Task<IActionResult> Get() {
List<String> errors = new List<String> { "Code is invalid" };
return BadRequest(new { errors = errors });
}
}
我得到以下信息:
{
"errors": ["Code is invalid"]
}
为什么ApiController在没有返回内容的情况下添加type、title、status和traceId?
我希望回复总是相似的,例如:
{
"errors": ["Code is invalid"],
"type": "https://tools.ietf.org/html/rfc7231#section-6.5.1",
"title": "Bad Request",
"status": 400,
"traceId": "0HLMFSL0C7SKB:00000001"
}
最佳答案
您只需要返回 ValidationProblem()
结果,而不是返回 BadRequest()
结果。这将为您提供包含当前 ModelState 错误的 ProblemDetails 对象响应。
关于c# - ApiController 并不总是在 BadRequest 中返回数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55973998/