我正在使用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添加类型,标题,状态和traceId?
我希望回复总是像这样:
{
"errors": ["Code is invalid"],
"type": "https://tools.ietf.org/html/rfc7231#section-6.5.1",
"title": "Bad Request",
"status": 400,
"traceId": "0HLMFSL0C7SKB:00000001"
}
最佳答案
默认的ControllerBase.BadRequest()
响应内容是因为您已将[ApiController]
属性应用于您的 Controller 。这是documented online:
这包括type
,title
,status
和traceId
值。
如果您没有应用[ApiController]
,那么ControllerBase.BadRequest()
将返回带有HTTP 400
状态码的空响应。
接受ControllerBase.BadRequest
或value
响应对象的model
的所有重载都将被序列化并返回,而不使用ApiController
默认响应。
关于c# - ApiController并不总是在BadRequest中返回数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55973998/