如何添加单个方法来处理多个路由
How to add single method to handle multiple routes
我的 rails 应用程序是一些其余 API 服务的代理服务器 这意味着对其余服务器的所有请求都通过我的 rails 应用程序进行路由。我在我的 routes.rb 文件中定义了所有需要的路由,并且我在我的控制器中为每个路由编写了不同的方法。因此,我希望在我的控制器中使用一个方法,而不是为每个路由使用不同的方法,我可以在其中检查 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
我认为你可以使用通配符路由来解决你这样的问题:
# 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
我的 rails 应用程序是一些其余 API 服务的代理服务器 这意味着对其余服务器的所有请求都通过我的 rails 应用程序进行路由。我在我的 routes.rb 文件中定义了所有需要的路由,并且我在我的控制器中为每个路由编写了不同的方法。因此,我希望在我的控制器中使用一个方法,而不是为每个路由使用不同的方法,我可以在其中检查 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
我认为你可以使用通配符路由来解决你这样的问题:
# 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