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
,也无法正确解析它。
所以 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
,也无法正确解析它。