Я переношу свой API с Piston на TastyPie. У нас есть существующие клиенты, поэтому мы хотим сохранить структуру URL-адресов API такой же.
Конфигурация urls.py верхнего уровня моего сайта выглядит так:
urlpatterns = patterns('',
........LOTS OF STUFF
(r'^v1/', include('api.urls')),
Используя Piston, каждый отдельный ресурс затем регистрируется независимо в api.urls и добавляется в шаблоны URL-адресов, поэтому вы можете увидеть, например, /v1/deals/.
Теперь у меня возникли проблемы с воссозданием этой структуры с помощью TastyPie. На верхнем уровне url-шаблоны объекта Tastypie Api() ожидают группу захвата с именем «api_name». По умолчанию v1 жестко закодирован как этот шаблон верхнего уровня, хотя вы можете переопределить его, передав «api_name» в качестве аргумента ключевого слова при создании экземпляра Api().
Мой текущий api.urls.py выглядит так (с вкусным пирогом):
v1_api = Api()
v1_api.register(DealResource())
urlpatterns = patterns('',
(r'^', include(v1_api.urls)),
)
В результате шаблон, который должен сопоставляться с API, теперь имеет вид '/v1/v1/[имя_ресурса]/'.
Одна проблема заключается в том, что я не вижу, как я могу удалить ^v1/' из конфигурации URL верхнего уровня. Наша индексная страница соответствует '^$', поэтому я не могу просто пойти по этому пути.
Я полагаю, что мог бы просто зарегистрировать отдельные ресурсы модели, а не объект API. Хотя это кажется неоптимальным. Я ошибся?
Я также рассматривал возможность создания подкласса объекта Tastypie Api и удаления группы захвата «api_name».
Есть предположения?