使用drf-yasg在Django中提供生成的Swagger模式

时间:2019-12-16 13:17:36

标签: python django django-rest-framework swagger drf-yasg

我正在使用drf-yasg为Django应用的API生成并提供Swagger JSON模式。在settings.py中,我创建了SWAGGER_SETTINGS对象:

SWAGGER_SETTINGS = {
    'DEFAULT_INFO': 'CDPtoolsSite.openapi.OPENAPI_INFO'
}

openapi模块中,我创建了openapi.Info可导入对象:

此后,我定义了几个端点来显示带有UI和不带有UI的架构:

from rest_framework import permissions
from drf_yasg.views import get_schema_view
from .openapi import OPENAPI_INFO

schema_view = get_schema_view(
    OPENAPI_INFO,
    public=True,
    permission_classes=(permissions.AllowAny, ),
)

urlpatterns = [
    # ...
    path(
        'swagger.json',
        schema_view.without_ui(cache_timeout=0),
        name='schema-json'
    ),
    path(
        'swagger/',
        schema_view.with_ui('swagger', cache_timeout=0),
        name='schema-swagger-ui'
    ),
    path(
        'redoc/',
        schema_view.with_ui('redoc', cache_timeout=0),
        name='schema-redoc'
    ),
]

当我转到/swagger.json时,路径服务器以YAML格式返回scheam文件,但是我需要以JSON生成架构。是否有一些标志返回JSON格式的文件? 我还尝试过手动生成架构文件(保存在静态目录中)并将其提供给单独的端点,但是它没有按我预期的那样工作:

urlpatterns = [
   #.....
   path(
        'api/schema',
        RedirectView.as_view(url=static_url('swagger_schema.json')),
        'swagger-schema'
    ),
]

有什么方法可以使drf-yasg生成JSON格式的服务模式?

0 个答案:

没有答案