首页 文章

django-rest-swagger:如何分组 endpoints ?

提问于
浏览
7

我正在使用Django REST Framework和django-rest-swagger库来构建API endpoints . 我想通过自定义属性而不是URL对一些API网址进行分组 .

例如,我有API endpoints ,并希望按功能对它们进行分组:

# 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'),

如何为django-rest-swagger进行自定义分组?

2 回答

  • 0

    我看到人们继续访问这个问题并对其进行投票 . 这意味着问题是实际的 . 我可以用最近的类似任务描述我最终的结果 .

    我根据OpenAPI规范创建了API endpoints 的YAML表示 . 我不得不在后端保留相同的API endpoints ,这是一个缺点,因为这不是自动生成的文档 .

    我用docker安装了Swagger-UI,它使用我的YAML规范来表示Swagger页面 .

    通过自定义组分隔 endpoints 很容易,甚至在两个组中有一个 endpoints .

  • 0

    您可以在任务应用程序中使用urls.py(我假设有一个),并在/ tasks URL中声明它们 .

    其中一个针对您的每个 endpoints

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

    这在你的api根urls.py中

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

    但是,看起来你可以使用DRF routers

相关问题