2013-08-20 4 views
2

최근에 내 API 프로젝트에서 버전을 구현했습니다. 이제 내 API URL에 /v1/이라는 접두어를 붙이십시오. (현재 v1을 사용 중입니다)URL 인코딩으로 인해 URL 재 작성이 실패합니다.

이전 호출을 중단하고 싶지 않으므로 투명 호환성을 보장하기 위해 이전 URL을 다시 작성하고 싶습니다. .

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

지금 직면하고있어 문제가 마지막이다 :

URL /events/9999/attendees처럼 내가 내 레일 경로 다음 코드와 설정 파일 routes.rb으로이 설정 /v1/events/9999/attendees

로 리디렉션한다 다시 작성된 경로는 URL 인코딩 된 것으로 보입니다. (또는 무언가) 사실, 그게%{path}인 것 같습니다.입니다. 그런 다음 :

/events/9999/attendees은 내가 잘못 뭐하는 거지 /v1/events%2F9999%2Fattendees

로 리디렉션됩니다?

많은 감사

당신이 redirect에 블록을 전달할 수 있습니다
+0

무엇 url_encode'에 대한 (경로)를 지정하는' – sircapsalot

답변

2

올바른 URL

match "*path", :to => redirect {|params, request| "/v1/#{params[:path]}"}, :constraints => lambda { |request| true } 
+0

감사합니다, 그것은 매력처럼 작동 – Codii

관련 문제