Return Json 请求错误

Return Json on a bad request

所以 OK(值)returns 格式化为 json,带有 application/json header。但是 BadRequest() 没有。如果请求是 application/json,那么响应不应该是这样的吗,即使它是一个错误的请求?

[HttpPost]
public IActionResult Post([FromBody]Resolution value)
{
    using (_ctx)
    {
        try
        {
            if (ValidateResolution(value.Size))
            {
                _ctx.Resolution.Add(value);
                _ctx.SaveChanges();
                return Ok(value);
            }
            return BadRequest("{ \"message\": \"hello\" }");
        } catch (Exception) {
            return BadRequest();
        }
    }
}

您正在做的是将字符串传递给 BadRequest(),这使您的操作 return 成为内容类型为纯文本的响应。

如果您想要 return 响应类型为 application/json 的 JSON 对象,那么您应该将不是字符串的对象传递给 BadRequest().您甚至可以传递一个匿名对象来快速创建一个 JSON 对象,如下所示:

return BadRequest(new { message = "bad request"});

PS:正确的 JSON 格式是 {"field_name" : "field_value"}(如果值的类型为 number、bool、null,则不需要引号)。因此,从您所写的内容来看,即使您将内容类型更改为 application/json,也无法正确解析它。