我正在开发一个以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
部分的网址发送请求。
答案 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
。