0

我对 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}')

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

4

1 回答 1

0

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

于 2012-04-29T21:15:02.920 回答