我最近在我的API项目上实现了版本控制。现在我的api的URL必须以序列/v1/
为前缀(正如我目前在v1上)
我不想打破旧电话,所以为了确保透明兼容性,我想重写旧网址。
应将/events/9999/attendees
等网址重定向到/v1/events/9999/attendees
我使用以下代码使用rails routes配置文件routes.rb
进行设置:
match "*path", :to => redirect("/#{API_CONFIG['current_version']}/%{path}"),
:constraints => lambda { |request| true }
我现在面临的问题是最终重写的路线似乎是网址编码的......(或其他)实际上,这似乎是 %{path}
。然后:
/events/9999/attendees
被重定向到/v1/events%2F9999%2Fattendees
我做错了什么?
非常感谢
答案 0 :(得分:2)
您可以将一个块传递给redirect
以指定正确的网址
match "*path", :to => redirect {|params, request| "/v1/#{params[:path]}"}, :constraints => lambda { |request| true }