【发布时间】:2020-12-18 01:16:59
【问题描述】:
我正在尝试使用 DRF 的 Open API AutoSchema + Swagger UI 来实现 API 文档。
我想要做的是指定一个基本 url,以便架构和招摇只显示资源(端点)。
在我的项目 urlpatterns 我有:
path('api/', include('api.urls')),
path('openapi/', get_schema_view(
title="Diakonia API",
description="API for food bank Diakonia",
version="1.0.0",
urlconf='api.urls',
), name='openapi-schema'),
path('swagger-ui/', TemplateView.as_view(
template_name='swagger-ui.html',
extra_context={'schema_url': 'openapi-schema'}
), name='swagger-ui')
这是我的架构的样子:
但是,当我“试一试”时,它给了我一个错误,因为它试图将请求发送到:localhost:8080/institutions,而它应该是 localhost:8080/api/institutions。
如果我像这样在 get_schema_view() 中添加 url 属性:url='/api/' 然后它可以工作,但是,端点显示api,这是基本 url 的一部分,而不是资源:
【问题讨论】:
-
我不认为
api是基本 url 意味着它不会在 url 路径中显示它。所以第二个版本实际上看起来应该是这样的 -
但是我所有的资源都在/api/下,所以,第二个版本太冗余了。如果我的 api 被版本化了怎么办?然后我对每个端点都有 /api/v1/ ,这使得它的可读性降低。
标签: django-rest-framework swagger-ui openapi