我是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}')
有关如何路线到所需位置的任何想法?另外,请随意评论我的版本控制方法。我欢迎这个建议。
答案 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 }}