我最近在我的 API 项目上实现了版本控制。现在,我的 api 的 URL 必须以序列 /v1/
为前缀(因为我目前使用的是 v1)
我不想破坏旧的调用,因此为了确保透明兼容性,我想重写旧的网址。
类似 /events/9999/attendees
的网址应重定向到 /v1/events/9999/attendees
我使用 Rails 路由配置文件 routes.rb
进行了设置,代码如下:
match "*path", :to => redirect("/#{API_CONFIG['current_version']}/%{path}"),
:constraints => lambda { |request| true }
我现在面临的问题是,最终重写的路线似乎是url编码的......(或其他东西)实际上,这就是 %{path}
这似乎坏了。然后:
/events/9999/attendees
重定向到 /v1/events%2F9999%2Fattendees
我做错了什么?
非常感谢
最佳答案
您可以将 block 传递给redirect
以指定正确的网址
match "*path", :to => redirect {|params, request| "/v1/#{params[:path]}"}, :constraints => lambda { |request| true }
关于ruby-on-rails - 由于 url 编码导致 URL 重写失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18338816/