我有一个使用Spree gem开发的Rails应用程序。出于安全原因,我想禁用所有API功能 - 进行REST调用的能力,方法,路由。我意识到,如果没有API令牌,就无法调用大多数API功能。
“关闭”API功能的最佳方法是什么? 最佳方式==最不容易侵入现有代码库
答案 0 :(得分:1)
到目前为止,我提出的最好的方法是将其添加到application.rb
类中我的主机应用程序Application
中:
initializer "delete_spree_api_routes", after: "add_routing_paths" do |app|
app.routes_reloader.paths.delete_if { |path| path =~ /\/spree(-[^\/]+)?\/api\/config\/routes.rb/ }
end
如果它们是从Spree API提供的routes.rb
加载的,它会立即删除路由中的所有路径。它有点难看,但它确实起作用。
编辑:我建议小心使用此功能,因为Spree在少数情况下使用自己的API,例如检索国家/地区的状态列表(GET /api/v1/states
)< / p>