1

我有一个 api 请求说“host/something/abc.xml”,它不发送 content_type。Rails 仍然明白它需要用 xml 响应并发送一个 xml 数据。如果同一个客户端使用“host/something/abc”调用,rails 会发回一个 HTML。(两者都没有 CONTENT_TYPE)

我想知道它是怎么发生的?我想检查客户端请求的 Rack 中间件?XML 或 JSON 或 HTML(我没有内容类型)。Rack::Request 中是否有任何方法可以检查它?我知道有一个方法 content_type 但它返回我为零。但是rails仍然用xml响应..怎么样?

4

1 回答 1

-1

请参阅http://en.wikipedia.org/wiki/List_of_HTTP_header_fields

Content-Type告诉你请求的类型。Accept告诉服务器客户端想要什么作为响应

这应该将接受标头输出到控制台。

require 'rack'

class Accepter
  def initialize(app, options={})
    @app, @options = app, options
  end
  def call(env)
    accepts = env["HTTP_ACCEPT"]
    warn "accepts = #{accepts.inspect}"
    @app.call
  end
end
于 2013-04-10T15:25:06.233 回答