繁体   English   中英

django-rest-swagger:如何对端点进行分组?

[英]django-rest-swagger: how to group endpoints?

我正在使用 Django REST 框架和 django-rest-swagger 库来构建 API 端点。 我想按自定义属性而不是 URL 对一些 API 网址进行分组。

例如,我有 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'),

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

我看到人们不断访问这个问题并对其进行投票。 这意味着问题是实际的。 我可以描述我最近完成类似任务的结果。

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

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

可以很容易地按自定义组分隔端点,甚至可以将一个端点分为两组。

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

每个端点的其中一个

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 路由器

那个设定呢?

SPECTACULAR_SETTINGS = {
    'SCHEMA_PATH_PREFIX': '/api/tasks',
}

或者,未经测试,但您似乎可以使用@extend_schema中的标签参数来自定义端点的分组。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM