2

我最近在我的 API 项目上实现了版本控制。现在我的 api 的 URL 必须以序列为前缀/v1/(因为我目前在 v1 上)

我不想破坏旧的调用,所以为了确保透明的兼容性,我想重写旧的 url。

网址/events/9999/attendees应该被重定向到/v1/events/9999/attendees

routes.rb我使用以下代码使用我的 rails routes 配置文件进行了设置:

match "*path", :to => redirect("/#{API_CONFIG['current_version']}/%{path}"),
:constraints => lambda { |request| true }

我现在面临的问题是最终重写的路线似乎是 url 编码的......(或其他东西)实际上, %{path} 这似乎是被破坏的。然后 :

/events/9999/attendees被重定向到/v1/events%2F9999%2Fattendees

我究竟做错了什么 ?

非常感谢

4

1 回答 1

2

您可以传递一个块redirect来指定正确的 url

match "*path", :to => redirect {|params, request| "/v1/#{params[:path]}"}, :constraints => lambda { |request| true }
于 2013-08-20T16:26:19.383 回答