Nom*_*man 2 ruby rest rack ruby-on-rails http-headers
我想做的很简单.Rails REST API有多个版本.所以,有一些路线,如:
http://www.example.com/v1/user.json
http://www.example.com/v2/user.json
http://www.example.com/v3/user.json
Run Code Online (Sandbox Code Playgroud)
我想要做的是根据请求的API版本端点向响应中添加自定义http标头.
在我的config/application.rb文件中,我试过:
config.action_dispatch.default_headers.merge!('my_header_1' => 'my_value_1', 'my_header_2' => 'my_value_2')
Run Code Online (Sandbox Code Playgroud)
我也在config/routes.rb文件中尝试过这个:
scope path: "v1", controller: :test do
get "action_1" => :action_1
get "action_2" => :action_2
Rails.application.config.action_dispatch.default_headers.merge!('my_header_1' => 'my_value_1', 'my_header_2' => 'my_value_2')
end
Run Code Online (Sandbox Code Playgroud)
但是,无论API版本端点如何,这两个片段都会将自定义标头附加到响应中.
我想我可以编写一个中间件来检查请求URL并根据它附加响应头,但听起来有点hackish.
有没有更好的方法来实现这一目标?最好是通过配置还是一些中心代码?
before_action
在控制器上使用a怎么样?我想每个API版本都有自己的控制器?这样你可以做类似的事情:
class API::V1::BaseController < ApplicationController
before_action :set_headers
protected
def set_headers
response.headers['X-Foo'] = 'V1'
end
end
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3958 次 |
最近记录: |