Django接入SwaggerAPI接口文档-完整操作(包含错误处理)
阅读原文时间:2023年08月09日阅读:2

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

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

  1. 安装依赖;

  2. 安装swagger;

  3. INSTALLED_APPS 注册;

  4. url主路由设置;

  5. runserver启动服务;

  6. get_link错误处理

  7. staticfiles错误处理

  8. 完成

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


  pip install django-rest-swagger

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自动生成接口文档
    ]

    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")    ]

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

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

    错误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 %}

     

     

    刷新浏览器,重新测试。