【问题标题】:Rails: Render Json Status ProblemsRails:渲染 Json 状态问题
【发布时间】:2014-03-20 17:31:05
【问题描述】:

当我

  render json: {
    error: "No such user; check the submitted email address",
    status: 400
  }

然后做我的测试并检查

response.code

我得到 200 而不是 400

我确信答案非常简单,但我一直在寻找一个小时,但似乎无法让它发挥作用。我可以只解析 Json,然后检查状态码……但没有办法让 response.code 返回状态吗?我知道从技术上讲它是成功的,我认为这就是 response.code 返回 200 的原因,但我之前使用的是 Jbuilder,我可以直接影响返回的代码。

【问题讨论】:

    标签: ruby-on-rails json jbuilder


    【解决方案1】:

    您已经在那里创建了 json,它将被返回,并且在该 json 中将是状态的标识 - 400。但是,这并没有告诉 Rails 在标头中发送 400 状态。

    你可以这样做:

    render json: {
      error: "No such user; check the submitted email address",
      status: 400
    }, status: 400
    

    或者类似的东西

    payload = {
      error: "No such user; check the submitted email address",
      status: 400
    }
    render :json => payload, :status => :bad_request
    

    您可以使用符号 :bad_request 或状态号 400。

    【讨论】:

    • 太棒了。我不认为 json 中的状态键/值是您要查找的内容,但我将其包含在示例中以防万一。
    • 我是否有理由希望 json 能够识别状态,而不仅仅是在标题中?再次感谢您的帮助!
    • 所以我见过各种各样的json响应payload,包括错误信息、状态信息等等。也许出于某种原因,客户端发现处理 json 响应比处理标头信息更容易。许多公共 API 都是这样做的。 Brian Mulloy 的“RESTful API 设计”幻灯片:slideshare.net/apigee/restful-api-design-second-edition
    • 仅供参考,API 设计幻灯片有更新版本:slideshare.net/apigee/api-design-3rd-edition
    • 这是一个方便的链接。 billpatrianakos.me/blog/2013/10/13/…
    猜你喜欢
    • 2023-03-29
    • 2011-05-24
    • 1970-01-01
    • 2021-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-19
    • 1970-01-01
    相关资源
    最近更新 更多