6

当发送标头“Content-type: application/json”时,Rails 会在多个级别更改行为:

  • 提交的帖子正文被解析为 json 而不仅仅是字符串参数
  • config/initializers/wrap_parameters.rb 中的 wrap_parameters :format => [:json] 用于解析已发布的参数(因此您可以发送带有或不带有根元素的 json)

如果我不能信任(外部)客户端传递正确的标头怎么办?换句话说,我想让我的应用程序表现得好像客户端总是通过'Content-type:application/json'标头,即使客户端实际上没有?

4

1 回答 1

1

您可以使用在操作中设置类型

request.format = :json

我用

class ExampleController < ApplicationController

  def always_accept_json
    request.format = :json
    respond_to do |format|
      format.json { raise "HEY" }
      format.html 
    end
  end
end

您可以在 Any ActionController 中的任何位置执行此操作,即,如果您希望在顶层使所有请求都以 content_type 的形式出现在您的应用程序中,application/json只需使其成为application_controller.rb该集合的过滤器request.format

于 2013-07-11T18:11:30.443 回答