【后端】【django】导出 API 文档的几种方法

在 Django 项目里,导出 API 文档是很常见的需求,一般可以借助第三方库来实现。

使用 drf-yasg 导出 Swagger/OpenAPI 格式文档

drf-yasg 是一个用于 Django REST framework 的工具,能够自动生成 Swagger 和 OpenAPI 格式的 API 文档。

步骤 1:安装 drf-yasg

在项目的虚拟环境中,使用以下命令安装 drf-yasg

bash 复制代码
pip install drf-yasg
步骤 2:配置 drf-yasg

settings.py 文件里,把 drf_yasg 添加到 INSTALLED_APPS 列表中:

python 复制代码
INSTALLED_APPS = [
    # ...
    'drf_yasg',
    # ...
]
步骤 3:配置 URL

在项目的 urls.py 文件中添加以下代码:

python 复制代码
from rest_framework import permissions
from drf_yasg.views import get_schema_view
from drf_yasg import openapi

schema_view = get_schema_view(
    openapi.Info(
        title="Your API",
        default_version='v1',
        description="API description",
        terms_of_service="https://www.example.com/terms/",
        contact=openapi.Contact(email="contact@example.com"),
        license=openapi.License(name="BSD License"),
    ),
    public=True,
    permission_classes=(permissions.AllowAny,),
)

urlpatterns = [
    # ...
    path('swagger<format>/', 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'),
    # ...
]
步骤 4:访问和导出文档
  • 访问文档界面 :启动 Django 开发服务器后,访问 http://127.0.0.1:8000/swagger/ 可查看 Swagger UI 界面,访问 http://127.0.0.1:8000/redoc/ 可查看 ReDoc 界面。
  • 导出文档 :访问 http://127.0.0.1:8000/swagger.json 或者 http://127.0.0.1:8000/swagger.yaml 就能获取 JSON 或者 YAML 格式的 OpenAPI 规范文件,可将其保存下来。

使用 django-rest-swagger 导出 Swagger 格式文档

django-rest-swagger 是较早用于 Django REST framework 的 Swagger 文档生成工具,不过该项目目前已不再维护。

步骤 1:安装 django-rest-swagger
bash 复制代码
pip install django-rest-swagger
步骤 2:配置 django-rest-swagger

settings.py 文件中,把 rest_framework_swagger 添加到 INSTALLED_APPS 列表中:

python 复制代码
INSTALLED_APPS = [
    # ...
    'rest_framework_swagger',
    # ...
]
步骤 3:配置 URL

在项目的 urls.py 文件中添加以下代码:

python 复制代码
from rest_framework_swagger.views import get_swagger_view

schema_view = get_swagger_view(title='Your API')

urlpatterns = [
    # ...
    path('swagger/', schema_view),
    # ...
]
步骤 4:访问和导出文档
  • 访问文档界面 :启动 Django 开发服务器后,访问 http://127.0.0.1:8000/swagger/ 可查看 Swagger UI 界面。
  • 导出文档:在 Swagger UI 界面里,点击右上角的"Export"按钮,即可导出 JSON 格式的 Swagger 文档。

使用 Spectacular 导出 OpenAPI 格式文档

drf-spectacular 是一个现代的 Django REST framework 库,可用于生成 OpenAPI 3.0 规范的 API 文档。

步骤 1:安装 drf-spectacular
bash 复制代码
pip install drf-spectacular
步骤 2:配置 drf-spectacular

settings.py 文件中,把 drf_spectacular 添加到 INSTALLED_APPS 列表中,并配置 REST framework:

python 复制代码
INSTALLED_APPS = [
    # ...
    'drf_spectacular',
    # ...
]

REST_FRAMEWORK = {
    # ...
    'DEFAULT_SCHEMA_CLASS': 'drf_spectacular.openapi.AutoSchema',
}
步骤 3:配置 URL

在项目的 urls.py 文件中添加以下代码:

python 复制代码
from drf_spectacular.views import SpectacularAPIView, SpectacularSwaggerView

urlpatterns = [
    # ...
    path('schema/', SpectacularAPIView.as_view(), name='schema'),
    path('schema/swagger-ui/', SpectacularSwaggerView.as_view(url_name='schema'), name='swagger-ui'),
    # ...
]
步骤 4:访问和导出文档
  • 访问文档界面 :启动 Django 开发服务器后,访问 http://127.0.0.1:8000/schema/swagger-ui/ 可查看 Swagger UI 界面。
  • 导出文档 :访问 http://127.0.0.1:8000/schema/ 可获取 JSON 格式的 OpenAPI 规范文件,将其保存即可。
相关推荐
B站_计算机毕业设计之家4 小时前
豆瓣电影数据采集分析推荐系统 | Python Vue Flask框架 LSTM Echarts多技术融合开发 毕业设计源码 计算机
vue.js·python·机器学习·flask·echarts·lstm·推荐算法
渣渣苏4 小时前
Langchain实战快速入门
人工智能·python·langchain
lili-felicity5 小时前
CANN模型量化详解:从FP32到INT8的精度与性能平衡
人工智能·python
数据知道5 小时前
PostgreSQL实战:详解如何用Python优雅地从PG中存取处理JSON
python·postgresql·json
ZH15455891315 小时前
Flutter for OpenHarmony Python学习助手实战:面向对象编程实战的实现
python·学习·flutter
玄同7655 小时前
SQLite + LLM:大模型应用落地的轻量级数据存储方案
jvm·数据库·人工智能·python·语言模型·sqlite·知识图谱
User_芊芊君子5 小时前
CANN010:PyASC Python编程接口—简化AI算子开发的Python框架
开发语言·人工智能·python
白日做梦Q5 小时前
Anchor-free检测器全解析:CenterNet vs FCOS
python·深度学习·神经网络·目标检测·机器学习
喵手5 小时前
Python爬虫实战:公共自行车站点智能采集系统 - 从零构建生产级爬虫的完整实战(附CSV导出 + SQLite持久化存储)!
爬虫·python·爬虫实战·零基础python爬虫教学·采集公共自行车站点·公共自行车站点智能采集系统·采集公共自行车站点导出csv
喵手5 小时前
Python爬虫实战:地图 POI + 行政区反查实战 - 商圈热力数据准备完整方案(附CSV导出 + SQLite持久化存储)!
爬虫·python·爬虫实战·零基础python爬虫教学·地区poi·行政区反查·商圈热力数据采集