2016-03-16 4 views
6

Я использую Django REST Framework и библиотеку django-rest-swagger для создания конечных точек API. Я хотел бы сгруппировать некоторые URL-адреса API с помощью настраиваемого атрибута вместо URL.django-rest-swagger: как сгруппировать конечные точки?

Например у меня есть API конечных точек, и хотел бы, чтобы сгруппировать их по функциям:

# task list management 

GET /api/tasks/known - get known tasks list with their parameters 
GET /api/tasks - get last tasks list with their statuses 

# Tasks by ID management 

GET /api/task/12345 - get task result/status 
DELETE /api/task/12345 - Revoke task 

# Task by name management: 
# MyTask123 

GET /api/tasks/MyTask123 - get task info (parameters, etc) 
POST /api/tasks/MyTask123 - async start new task 

# MySuperShinyTask777 

GET /api/tasks/MySuperShinyTask777 - get task info (parameters, etc) 
POST /api/tasks/MySuperShinyTask777 - async start new task 

# scheduled tasks management 

GET /api/tasks/scheduled - get list of scheduled tasks 

# manage exact scheduled tasks 

POST /api/tasks/scheduled/MyTask123 - schedule new task 
GET /api/tasks/scheduled/12345 - get scheduled task details 
PUT /api/tasks/scheduled/12345 - change scheduled task 
DELETE /api/tasks/scheduled/12345 - delete scheduled task 

Так что я хотел бы показать их группировать по ролям. Теперь они сгруппировали все только «/ api /», и все.

В urls.py я включаю это так:

url(r'^api/', include('api.urls'), name='my-api-root'), 

Как я могу сделать заказ группирования для Джанго-покоя чванство?

+0

Привет, ты как это сделать? – Dineshs91

+0

Нет, я этого не делал. Кажется, вам, возможно, придется написать свой собственный интерфейс для этого. – baldr

+0

О, спасибо за быстрый ответ. – Dineshs91

ответ

0

У вас может быть urls.py в приложении задач (я предполагаю, что есть один) и объявить их в своих/заданных URL-адресах.

Одна из этого для каждого из конечных точек

url(r'^ tasks/(?P<task_id>\w+)$', 
    YourTaskView, 
    name='task'), 

И это в апи корня urls.py

url(r'^api/', include('api.tasks.urls'), name='my-api-root'), 

НО, похоже, вы могли бы использовать DRF routers