【Dv3Admin】drf-yasg Swagger UI 配置与优化实践

随着API文档自动化需求的增长,Swagger UI已成为Django项目接口文档管理的核心工具之一。如何根据实际项目需求,优化Swagger界面与交互体验,成为开发者关注的重点。

本文梳理Swagger UI在drf-yasg框架中的常见定制方法,包括隐藏Model区域、折叠API分组、核心配置参数详解等,帮助高效构建清晰、易用的接口文档页面。

Swagger 配置

SWAGGER_SETTINGS 是 Django REST Framework 项目中用于定制 Swagger UI 行为的重要参数集合,能够针对接口文档的认证方式、页面显示风格、分组与排序规则、接口参数编辑体验、分层粒度、静态资源加载等多维度进行灵活配置。通过合理设置各项参数,不仅可以提升文档的交互性与可读性,还能满足团队在接口调试、安全访问、风格统一等方面的多样化需求。在实际应用中,核心配置项通常围绕接口分组方式、接口排序、认证机制与文档展示进行调整,能够有效提升开发、测试与运维人员在API对接过程中的效率和体验。同时,针对不同的业务场景,项目还可以通过自定义schema生成类、字段和过滤器展示方式,以及静态资源拓展,为接口文档提供更专业和贴合实际的展示效果,进一步增强文档的实用性和可维护性。

参数名作用与详细说明
SECURITY_DEFINITIONS用于配置接口文档的认证方式。例如配置 Basic Auth、Bearer Token 等,开发者可在 Swagger UI 直接输入认证信息调试接口。常见写法如:{"basic": {"type": "basic"}}
LOGIN_URL指定文档页面的登录URL,未登录用户访问Swagger UI会自动跳转到该地址。通常配置为站点实际的登录路由。
LOGOUT_URL指定文档页面的登出URL,点击登出按钮时跳转的地址。可用来安全退出登录态。
DOC_EXPANSION控制接口分组默认的展开方式。取值"none"表示全部折叠,"list"表示分组展开接口折叠,"full"为分组和接口都展开。通常推荐用"none"以提升文档可读性。
APIS_SORTER控制接口分组(tags)的排序方式。设置为"alpha"表示按字母序排序,便于快速定位。
JSON_EDITOR启用后,接口请求参数中的 JSON 输入框将变为可视化编辑器,便于编辑复杂结构的参数。设置为 True 启用。
OPERATIONS_SORTER控制同一分组下接口(GET/POST/PUT/DELETE等)的排序方式。设置为"alpha"时,接口按字母顺序排列。
VALIDATOR_URL指定Swagger UI的在线校验服务地址。通常设为 None,表示不使用Swagger官方的校验API。可避免网络请求报错。
AUTO_SCHEMA_TYPE控制 API 分组的分层粒度,0、1、2 分别对应不同的URL层级分组,影响文档分组方式。具体取值根据实际API设计需求调整。
DEFAULT_AUTO_SCHEMA_CLASS指定默认的自动schema生成类,通常用于自定义字段展示、接口注释格式等高级功能。
SHOW_REQUEST_HEADERS控制是否在接口调试时显示请求头。设置为 True 可以查看和编辑请求头信息。
USE_SESSION_AUTH是否启用 session 认证,便于开发阶段基于Cookie自动带登录态进行接口调试。默认为 False
EXTRA_STATIC_FILES指定Swagger UI加载的额外静态文件,适用于自定义样式或脚本扩展。
DEFAULT_FIELD_INSPECTORS用于定制字段类型在schema中的呈现方式,适用于复杂场景下的文档定制。
DEFAULT_FILTER_INSPECTORS控制过滤器在schema中的展示方式,便于前端理解过滤参数。

全部参数样例可以参考下面的内容,复制到项目中进行修改即可。

SWAGGER_SETTINGS = {
    "SECURITY_DEFINITIONS": {            # 配置接口文档的认证方式(常用 basic/basic auth)
        "basic": {"type": "basic"},
        # "Bearer": {"type": "apiKey", "in": "header", "name": "Authorization"},  # 可选:Bearer Token认证示例
    },

    "LOGIN_URL": "apiLogin/",            # 登录页URL,未登录时跳转此页面(可选,按实际项目路由)
    "LOGOUT_URL": "rest_framework:logout",   # 登出URL,点击登出按钮跳转此地址(可选)

    "DOC_EXPANSION": "none",             # 控制接口分组展开方式:"none"=全部折叠,"list"=分组展开接口折叠,"full"=全部展开
    "APIS_SORTER": "alpha",              # 接口分组(tag)排序方式:"alpha"按字母升序,可选"alpha"或"method"
    "OPERATIONS_SORTER": "alpha",        # 同组下接口排序方式,"alpha"按方法名字母升序,可选"alpha"或"method"
    "JSON_EDITOR": True,                 # 启用JSON编辑器,便于填写复杂参数,True/False(可选)
    "VALIDATOR_URL": None,               # 不使用Swagger官方的schema校验服务,避免多余外网请求(可选)

    "AUTO_SCHEMA_TYPE": 1,               # url分组层级,0/1/2,影响API文档分组显示(可选,按实际需要)
    "DEFAULT_AUTO_SCHEMA_CLASS": "dvadmin.utils.swagger.CustomSwaggerAutoSchema",  # 自定义schema生成类(可选,按项目定制)

    # 以下为可选高级参数(如无特别需求可省略)
    "SHOW_REQUEST_HEADERS": True,        # 是否显示请求头信息,便于调试(可选)
    "USE_SESSION_AUTH": True,            # 启用session认证,登录后可自动带cookie调试(可选,常用于开发环境)
    "EXTRA_STATIC_FILES": [],            # 自定义Swagger UI加载的额外静态文件,如自定义样式脚本等(可选)
    "DEFAULT_FIELD_INSPECTORS": [],      # 定制字段类型的schema展示方式,复杂文档定制时使用(可选)
    "DEFAULT_FILTER_INSPECTORS": [],     # 控制过滤器schema展示方式,复杂场景可用(可选)
}

优化实践

在实际开发中,Swagger UI默认界面经常出现不必要的信息堆叠,如Model模块和接口分组全部展开,影响文档的整体可读性与操作效率。通过定制drf-yasg的静态页面源码与合理配置SWAGGER_SETTINGS,可以实现隐藏Model区域与折叠所有分组的效果,使API文档更加简洁明了,适应复杂项目的管理与浏览需求。

隐藏Model模块

这个 model 区域基本用不到可以隐藏。
在这里插入图片描述

但是在 Swagger 的配置中是无法操作,需要修改页面源码。在项目目录下找到 drf-yasg 目录下的 swagger-ui.html ,在 {% block main_styles %} 下添加

        <style>
            .swagger-ui .models,
            .swagger-ui section.models {
                display: none !important;
            }
        </style>

在这里插入图片描述

保存后,刷新 Swagger 页面即可生效(如还不生效,重启服务、强制刷新页面)。

折叠全部信息

在 Swagger UI 的 SWAGGER_SETTINGS 配置中,"DOC_EXPANSION": "none" 用于控制接口文档页面分组的默认展开行为。将该参数设置为 "none" 时,Swagger UI 页面中的所有 API 分组在页面加载时全部处于折叠状态,用户需要手动点击分组标题才能展开查看接口详情。这种设置能够有效提升文档的可读性,特别是在接口数量较多或分组较为复杂的项目中,避免页面初始加载时因分组过多而导致信息堆叠、影响整体浏览体验。

SWAGGER_SETTINGS = {
    .....
    "DOC_EXPANSION": "none",                             # 控制文档分组展开方式,推荐"none"全部折
    .....
}

总结

合理定制Swagger UI能极大提升API文档的可读性与交互体验。通过隐藏无用的Model区域、调整分组展开方式、精细配置SWAGGER_SETTINGS参数,可以实现更贴合项目实际的接口文档展示与调试环境。这些配置不仅方便开发和测试,也为后期的维护和接口对接工作提供了坚实基础。

面向未来,接口文档的自动化与定制将继续深入,更多针对不同业务场景的展示与交互方案会不断涌现。持续关注社区和框架更新,适时引入新特性,有助于保持文档管理的高效与先进性。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr数据杨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值