Django3 关于swagger的应用

Swagger优势:

1)Swagger可生成一个具有互动性的API控制台,开发者可快速学习和尝试API
2)Swagger支持不同客户端SDK代码,用于不同平台上(Java、Python、...)的实现
3)Swagger可在不同的平台上从代码注释中自动生成
4)Swagger社区活跃,里面有许多强悍的贡献者

从2019年6月份开始,官方废弃了django-rest-swagger,在django 3.0中已经不支持该库了,取而代之的是全新的第三方drf-yasg库。

GitHub地址:

https://github.com/marcgibbons/django-rest-swagger

1.安装drf-yasg库

pip install drf-yasg

2.修改项目settings.py文件,在INSTALLED_APPS中添加drf_yasg

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'drf_yasg',
    'rest_framework'
]

3.修改项目url.py文件,进行路由配置
导入get_schema_view和openapi包

from drf_yasg.views import get_schema_view
from drf_yasg import openapi

添加如下代码

schema_view = get_schema_view(
    openapi.Info(
        title="测试项目API",
        default_version='v1.0',
        description="测试工程接口文档",
        terms_of_service="https://www.baidu.com",
        contact=openapi.Contact(email="baidu@163.com"),
        license=openapi.License(name="BSD License"),
    ),
    public=True,
    permission_classes=(permissions.AllowAny,),
)

在urlpatterns中添加下面3行

   url(r'^swagger(?P<format>\.json|\.yaml)$', schema_view.without_ui(cache_timeout=0), name='schema-json'),
   url(r'^swagger/$', schema_view.with_ui('swagger', cache_timeout=0), name='schema-swagger-ui'),
   url(r'^redoc/$', schema_view.with_ui('redoc', cache_timeout=0), name='schema-redoc'),

4.查看效果
服务运行起来后,浏览器访问http://127.0.0.1:8000/redoc/,就可以看到redoc ui界面图
或者访问http://127.0.0.1:8000/swagger,就可以看到Swagger接口文档界面

posted @ 2020-11-20 11:28  qimua  阅读(775)  评论(0)    收藏  举报