Rails:将API请求限制为JSON格式

我想限制对所有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

发表评论