2012-04-26 111 views
0

我是一種新的主​​塔,我的任務是設計一個API版本控制系統。我想將不同版本的API存儲在不同的文件夾中。例如:主塔通過文件夾路由

controllers/APIVersion/v1/clientAPI.py -- Version 1 
controllers/APIVersion/v2/clientAPI.py -- Version 2 
controllers/APIVersion/v3/clientAPI.py -- Version 3 

的請求獲得這些API應該是這樣的:

curl 'http://mySite/v1/clientAPI/get/' -- Should bring me to the first version 
curl 'http://mySite/v2/clientAPI/get/' -- Should bring me to the second version 

我知道我可以通過routing.py做到這一點。這似乎並沒有工作我的第一個想法:

map.connect('/APIVersion/{version}/{controller}/{action}') 

任何想法如何路由到所需的位置?此外,請隨時對我的版本控制方法發表評論。我歡迎這個建議。

回答

0

路徑看到的第一件事是URL(它也是connect的第一個參數)。 您嘗試使用/v1/clientAPI/get/之類的網址訪問API,但是您已使用/APIVersion/{version}/{controller}/{action}之類的路由配置了您的routing.py。所以沒有比賽。
最簡單的「修復」將使用的URL像http://mySite/APIVersion/v1/clientAPI/get/爲v1或http://mySite/APIVersion/v2/clientAPI/get/爲V2等(你還需要確保APIVersion &所有V1到Vx是包+每個clientAPI.py控制器類被稱爲ClientapiController )。
如果這不是一個選項(因爲您仍然想要使用像/v1/clientAPI/get/這樣的URL但控制器目錄佈局類似於/APIVersion/v1/clientAPI/get/),那麼您需要使用類似於here所列的方法。