2

最近、API プロジェクトにバージョニングを実装しました。これで、API の URL にシーケンスのプレフィックスを付ける必要があります/v1/(現在 v1 を使用しているため)。

古い呼び出しを中断したくないので、透過的な互換性を確保するために、古い URL を書き換えたいと考えています。

URL like はに/events/9999/attendeesリダイレクトする必要があります/v1/events/9999/attendees

routes.rb次のコードを使用して、レールルート構成ファイルでこれを設定しました。

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 に答える