c# - 在错误的请求上返回 Json

标签 c# asp.net-core asp.net-core-webapi

所以 OK(value) 返回带 application/json header 的格式化 json。但是 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(),这使您的 Action 返回一个内容类型为纯文本的响应。

如果你想返回一个响应类型为 application/json 的 JSON 对象,那么你应该将一个不是字符串的对象传递给 BadRequest()。您甚至可以像这样传递一个匿名对象来快速创建一个 JSON 对象:

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

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

关于c# - 在错误的请求上返回 Json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44291834/

相关文章:

c# - 无效的框架标识符 Dotnet 还原、docker 构建

c# - 从 header Asp.Net Core WebApi 绑定(bind)自定义对象

c# - GetDiscoveryDocumentAsync : "An invalid request URI was provided. The request URI must either be an absolute URI or BaseAddress must be set."

c# - 我可以使用 Reflection.Emit 生成代码并将生成的代码保存在 .cs 文件中,还是可以使用 CodeDom?

c# - 在 Xamarin.Forms 应用程序中使用 ZXing.Net.Mobile 呈现二维码

c# - swagger-ui 中默认的 api 版本值

asp.net-core - 为什么当我们创建新的 Web APi 服务时,.NET Core 中的 Web API 的身份验证类型 - 个人用户帐户不可用

c# - 根据某个属性的值将一个列表拆分为多个列表

c# - 遍历列表不会检查每个对象

javascript - 数据表中的多个子行,来自asp.net core中sql server的数据