【问题标题】:How does Rails 4 know which format to use for views?Rails 4 如何知道视图使用哪种格式?
【发布时间】:2014-12-22 15:11:09
【问题描述】:

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

【问题讨论】:

    标签: ruby-on-rails-4


    【解决方案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
    

    除此之外,如果您在 url 中添加 format,Rails 还会更改响应格式,例如 products/index.xml

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-02-15
      • 2021-02-06
      • 2012-07-17
      • 2014-08-27
      • 1970-01-01
      • 1970-01-01
      • 2014-11-01
      相关资源
      最近更新 更多