Django接入SwaggerAPI接口文档-完整操作(包含错误处理)

Swagger的简介:

  Swagger是一个规范和完整的框架,用于生成、描述、调用和可视化RESTful风格的Web服务,在做后端开发的同时自动生成一个API文档供前端查看,当接口有变动时,对应的接口文档也会自动更新。

Swagger的优势:

  Swagger生成一个API控制台,开发者可快速管理和获取API接口信息

Swagger的部署步骤:

  1. 安装依赖;
  2. 安装swagger;
  3. INSTALLED_APPS 注册;
  4. url主路由设置;
  5. runserver启动服务;
  6. get_link错误处理
  7. staticfiles错误处理
  8. 完成

Swagger的依赖:

  django-rest-framework,换言之在前后端分离开发的时候,swagger是和drf配合使用的。


Swagger的安装:

  pip install django-rest-swagger

Swagger在settings.py中的配置:

INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'rest_framework', 'rest_framework_swagger', # swagger自动生成接口文档
]

Swagger在项目主路由urls.py中的配置:

    from django.urls import path

    # 导入restframework的辅助函数get_schema_view,获取架构视图
    from rest_framework.schemas import get_schema_view     # 导入swagger的两个Render类
    from rest_framework_swagger.renderers import SwaggerUIRenderer,OpenAPIRenderer     # 利用get_schema_view()方法,传入两个Render类得到一个schema view
    schema_view = get_schema_view(title='API',renderer_classes=[SwaggerUIRenderer,OpenAPIRenderer])     # 配置接口文档的访问路径
    urlpatterns = [     path('docs/', schema_view, name="swagger")
    ]

Swagger接口说明:

    在接口类视图里面写上注释,可以被当成接口文档说明显示。

Swagger测试:

    python manage.py runserver 启动服务,浏览器访问localhost:8001/docs/或者http://127.0.0.1:8001/docs/。8001为端口,实际测试中以自己的端口为准。

Swagger错误处理:

    错误1:'AutoSchema' object has no attribute 'get_link'

    

 

 

     解决:REST_FRAMEWORK中添加'DEFAULT_SCHEMA_CLASS': 'rest_framework.schemas.coreapi.AutoSchema',  # rest_framework_swagger的配置

    REST_FRAMEWORK = {
    'DEFAULT_SCHEMA_CLASS': 'rest_framework.schemas.coreapi.AutoSchema', # rest_framework_swagger的配置}

    

 

    错误2:'staticfiles' is not a registered tag library. Must be one of:

    

 

 

     解决:找到虚拟环境文件夹env/lib/python3.10/site-packages/rest_framework_swagger/templates/rest_framework_swagger/index.html,将第二行的{% load staticfiles %} 修改为:{% load static %}

     

 

 

     

 

 

     刷新浏览器,重新测试。

    

 

posted @ 2023-01-19 16:53  侬侬发  阅读(780)  评论(0编辑  收藏  举报