通过文件夹路由的铁塔

时间:2012-04-26 17:35:09

标签: python api routing versioning pylons

我是pylons的新手,我的任务是设计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}')

有关如何路线到所需位置的任何想法?另外,请随意评论我的版本控制方法。我欢迎这个建议。

1 个答案:

答案 0 :(得分:0)

Routes看到的第一件事是URL(也是connect的第一个参数)。 您尝试使用/v1/clientAPI/get/等网址访问API,但您已使用/APIVersion/{version}/{controller}/{action}等路由配置了routing.py。所以没有比赛。
最简单的“修复”是对v1使用http://mySite/APIVersion/v1/clientAPI/get/等URL,对v2使用http://mySite/APIVersion/v2/clientAPI/get/等等(你还需要确保APIVersion& all v1到vX都是包+控制器每个clientAPI.py中的类称为ClientapiController) 如果那不是一个选项(如你仍然想要使用像/v1/clientAPI/get/这样的URL但是具有像/APIVersion/v1/clientAPI/get/这样的控制器目录布局),那么你需要使用类似于列出的方法{{3 }}