如何在给定命名空间下为我的Rails应用程序设置所有传入请求的默认Content-Type?
在我的情况下,我有一个/api
命名空间,总是期望JSON,但我不想强迫客户端始终设置它(他们欢迎这样做,如果他们取悦,在这种情况下, Rails app应该遵守设置的Content-Type)。所以它应该默认为application/json
。
这将使用curl
等进行测试很容易。
我该怎么做?
答案 0 :(得分:2)
一种方法是在API控制器中指定操作之前并设置JSON格式:
before_filter :default_request_format
private
def default_request_format
request.format = :json
end
或者您可以在routes.rb
中指定JSON格式。
答案 1 :(得分:1)
让所有API控制器继承自Api :: Controller类,只有respond_to:json
示例:
class Api::Controller < ActionController::Base
respond_to :json
before_filter :default_request_format
private
def default_request_format
request.format = :json
end
end
现在你的其他Api控制器可以继承它并自动响应JSON。
例如,您有一个名为'FooBar'的模型:
class Api::FooBarsController < Api::Controller
def index
@foobars = FooBar.all
respond_with(@foobars)
end
end