我正在将我的 API 从 Piston 移植到 TastyPie。我们有现有的客户端,因此我们希望保持 API 的 url 结构相同。
我网站的顶级 urls.py conf 如下所示:
urlpatterns = patterns('',
........LOTS OF STUFF
(r'^v1/', include('api.urls')),
使用 Piston,每个单独的资源都会在 api.urls 中独立注册并添加到 urlpatterns,因此您可能会看到 /v1/deals/ 示例。
现在,我在用 TastyPie 重新创建这个结构时遇到了一些问题。在其顶层,Tastypie Api() 对象的 urlpatterns 需要一个名为“api_name”的捕获组。默认情况下,v1 被硬编码为顶级模式,尽管您可以通过在实例化 Api() 时将“api_name”作为关键字参数传递来覆盖它。
我当前的 api.urls.py 看起来像这样(带有tastepie):
v1_api = Api()
v1_api.register(DealResource())
urlpatterns = patterns('',
(r'^', include(v1_api.urls)),
)
结果是要为 API 匹配的模式现在是“/v1/v1/[resource_name]/”。
一个问题是我看不到如何从顶级 url conf 中删除 ^v1/'。我们的索引页匹配“^$”,所以我不能只走那条路。
我想我可以只注册单个模型资源,而不是 api 对象。不过,这似乎不是最理想的。我错了吗?
我还考虑过对 Tastypie Api 对象进行子类化并删除“api_name”捕获组。
有什么想法吗?