2011-11-03 124 views
0

当我们拿到一个没有内容的响应,204,它带有一个信息“没有内容”,并显示响应覆盖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响应说必须不包括消息正文,因此始终由报头字段之后的第一空行终止。

我们能以某种方式破解并显示一个消息体

+0

我不知道,如果黑客会有所帮助,大部分客户收到204响应时,不会对任何消息体,他们会忽略它(虽然我不知道这一点)。 – Ernest

+0

@Ernest ..yaa我同意你的意见,但在我的情况下,他们期望,这就是我在这里... – Bijendra

回答

1

HTTP 204没有错误响应。响应成功时使用204,内容主体故意为空

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

服务器已经履行了请求,但不需要返回 实体主体,并且可能要返回更新的元信息。 响应可能包含以 实体标题形式的新的或更新的元信息,如果存在,应该与 请求的变体相关联。

如果客户端是用户代理,则不应将其文档视图 从导致请求发送的文档视图中更改。此响应为 ,主要用于允许在没有 引起用户代理活动文档视图更改的情况下发生操作输入,但 应将任何新的或更新的元信息应用于当前位于用户代理活动视图中的文档 。

204响应不能包含消息体,因此始终由头字段后的第一个空行终止 。

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

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

+0

对不起,没有足够清楚..看我的编辑 – Bijendra