覆盖204状态代码消息

时间:2011-11-03 11:41:54

标签: ruby xml json http http-status-code-404

当我们收到无内容回复为204时,会出现“无内容”消息并显示回复

      Response : #<Net::HTTPNoContent 204 No Content  readbody=true>

虽然我想要的反应如下:

 <response>
   <request_id>4ccf18f0-e83d-012e-29f7-042b2b8686e6</request_id>
   <status_code>204</status_code>
   <message>No Offers were found</message>
</response>

我可以覆盖204错误的默认消息。正在调用以创建响应的方法。

def generate_success_response_without_data(format, request_id, message)
  status_code = 204
  format_type_method, options_hash, content_type = get_format_method(format)
  data = {
    "request_id" => request_id,
    "status_code" => status_code,
    "message" => message
  }
  data = generate_data_format(format, data)
  resp = [status_code, {"Content-Type" => content_type}, data.send(format_type_method, options_hash)]
  # Convert rack response to action controller response           
  generate_active_controller_response_format(resp)
  resp
end

编辑: 如http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

中所述

204响应绝不能包含消息体,因此总是在头字段后面的第一个空行终止。

我们可以以某种方式破解并显示消息正文

1 个答案:

答案 0 :(得分:1)

HTTP 204不是错误响应。当响应成功且内容正文故意为空时,则使用204。

来自:http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

  

服务器已完成请求但不需要返回   entity-body,可能想要返回更新的元信息。该   响应可能包括新的或更新的元信息形式   实体标题,如果存在,应该与...相关联   要求的变体。

     

如果客户端是用户代理,它不应该更改其文档视图   从导致请求发送的那个。这个回应是   主要是为了允许在没有的情况下进行动作的输入   但是,导致更改用户代理的活动文档视图   任何新的或更新的元信息应该应用于文档   目前在用户代理的活动视图中。

     

204响应绝不能包含消息体,因此总是如此   由标题字段后的第一个空行终止。

在这种特殊情况下,404看起来更合适。

更多信息:http://benramsey.com/archives/http-status-204-no-content-and-205-reset-content/