我想限制对所有API控制器的请求重定向到JSON路径。我想使用重定向,因为URL也应该根据响应而更改。
一种选择是使用before_filter,它将请求重定向到相同的操作,但强制使用JSON格式。这个例子还不起作用
#base#u controller.rb
类Api::V1::BaseController<;InheritedResources::Base
前\u过滤器:强制\u响应\u格式
回复:json
def force_响应_格式
将_重定向到,params[:format]=:json
终止
终止
另一个选项是限制routes设置中的格式
#routes.rb
MyApp::Application.routes.draw do
名称空间:api,默认值:{format:'json'}do
名称空间:v1 do
资源:员额
终止
终止
终止
我希望所有请求都以JSON请求结束:
http://localhost:3000/api/v1/posts
http://localhost:3000/api/v1/posts.html
http://localhost:3000/api/v1/posts.xml
http://localhost:3000/api/v1/posts.json
...
你会推荐哪种策略
在路由中设置默认值不会将所有请求转换为JSON请求
您需要的是确保所呈现的内容都是JSON响应
在第一个选项中,除了你需要这样做之外,你几乎已经有了它
过滤器之前的代码:设置默认响应格式
私有的
def set_默认_响应_格式
request.format=:json
终止
这将放在您的基本API控制器下,因此当它进入实际操作时,格式将始终是JSON