2016-06-09 150 views
1

在Ruby on Rails上实现Rest API。所以我想以json格式回应所有请求。我做到这一点:以json格式响应所有格式请求

include ActionController::MimeResponds 


before_filter :force_json 

def force_json 
    response.format = "json" 
    #also tried 
    # response.content_type = Mime[:json] 
end 

这两种方式没有奏效。它给了我一个错误的HTML页面。 也有一种方法来实现整个api而不是每个类的? 谢谢!

+0

结帐在http://stackoverflow.com/questions/23946630/rails-4-how-to-render-json-regardless-of-requested-format –

+0

指定的应答虽然你肯定能* *以json格式响应所有请求,你应该*做的是阻止任何不请求JSON格式的请求。这个答案:http://stackoverflow.com/a/3679735/476712说明如何做到这一点。 – lorefnon

回答

0

如果您希望它发生在应用程序范围内,您可以在应用程序控制器中执行类似操作。

class ApplicationController < ActionController::Base 
    before_action :force_json 

    def force_json 
    request.format = :json 
    end 
end 
0

如果使用responders宝石,你可以在你的类的顶部定义此:

class PostsController < ApplicationController 
    respond_to :json 
    ... 

然后该控制器将使用JSON默认响应。

+0

即使使用这个宝石,并添加该代码,如果我请求Content-Type文本/ HTML我得到一个HTML网站。我想得到一个错误的JSON –