我的rails应用程序是一些其他API服务的代理服务器这意味着其余服务器的所有请求都是通过我的rails应用程序进行路由。我在routes.rb文件中定义了所有require路由,并且我为控制器中的每个路由编写了不同的方法。因此,对于每个路由而不是不同的方法,我想在我的控制器中使用单个方法,我可以检查request.fullpath并根据请求参数将其重定向到适当的休息服务调用
这是我的路线看起来像
get '/lookup/location/search', to: 'ticketing#lookup_location_search'
get '/lookup/company/search', to: 'ticketing#lookup_company_search'
get '/lookup/assignmentGroup/search', to: 'ticketing#lookup_assignment_group_search'
get '/lookup/ci/search', to: 'ticketing#lookup_ci_search'
get '/lookup/user/search', to: 'ticketing#lookup_user_search'
对于每条路线,控制器中都有一个单独的方法,而不是我需要一个方法,可以根据请求参数进一步调用正确的休息URL
答案 0 :(得分:2)
我认为你可以使用通配符路由来解决这个问题:
# routes.rb
get '/lookup/*other_parts', to: 'ticketing#proxy_action' , format: false
# maybe with constraints
# get '/lookup/*other_parts', to: 'ticketing#proxy_action' , format: false, constraints: { other_parts: /.../ }
# within your controller
def proxy_action
case params[:other_parts]
when 'location/search'
...
when 'assignmentGroup/search'
...
...
else
...
end