Rails 4如何知道用于视图的格式?

时间:2014-12-22 15:11:10

标签: ruby-on-rails-4

我正在开发一个以SOAP消息形式接收请求的应用程序。

假设用户通过POST方法发送SOAP消息来解决my.app.com/push_notification

我的日志我看到了这样一句话:

Processing by Service#push_notification as XML.

Rails使用push_notification.xml作为此请求的视图。

我不能得到的一件事 - 通过Rails知道它必须呈现XML视图的请求中的哪些信息?

我会理解用户是否会向my.app.com/push_notification.xml发送请求,但现在用户正在向没有.xml部分的网址发送请求。

1 个答案:

答案 0 :(得分:1)

Rails根据客户端提交的HTTP Accept标头确定所需的响应格式。

查看请求的请求标头(您可以在浏览器中使用开发人员工具 - >网络标签执行此操作)。这些标头将包含一个密钥 Accept ,其中包含客户端(您的浏览器)接受此请求的所有格式的值。

对于普通的HTML网页,它看起来像:

Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8

对于JSON ajax请求,它看起来像:

Accept:application/json, text/javascript, */*; q=0.01

除此之外,如果您向网址添加format,Rails也会更改响应格式,例如products/index.xml