Skip to main content

从 Django Rest Framework 代码自动生成真正的 Swagger/OpenAPI 2.0 模式

项目描述

DRF - 又一个 Swagger 生成器 2

从 Django REST 框架代码自动生成真正的 Swagger/OpenAPI 2.0 模式。

注意

原来的 drf-yasg存储库现在再次得到维护。这个 repo 将保持原样为仍在使用它的人提供服务。

请迁移回使用原始存储库并提交贡献。

地位

资源 盾牌
项目 发布 建造
出版商 皮皮
下载 pypi_downloads
提高 问题 拉

兼容性

发布 Python 姜戈 Django REST 框架
1.18.x 2.7 1.11 3.8 - 3.9
1.18.x 3.6 - 3.8 2.2 - 3.0 3.8 - 3.12
1.19.x 3.6 - 3.9 2.2 - 3.1 3.8 - 3.12

特征

  • 完全支持嵌套的序列化器和模式

  • 响应模式和描述

  • 与代码生成工具兼容的模型定义

  • 规范生成过程中所有点的自定义挂钩

  • 用于规范的 JSON 和 YAML 格式

  • 捆绑最新版本的swagger-uiredoc以查看生成的文档

  • 架构视图开箱即用可缓存

  • 生成的 Swagger 架构可以通过swagger-spec-validator自动验证

  • URLPathVersioning使用和 支持 Django REST Framework API 版本控制NamespaceVersioning;当前不支持其他 DRF 或自定义版本控制方案

截图

完全嵌套的请求和响应模式

重做截图

在 redoc 和 swagger-ui 之间进行选择

Swagger-ui 截图

模型定义

模型截图

安装

从 pypi 安装包:

pip install drf-yasg2

鉴于手动自定义生成的模式的方法众多,验证结果以确保它仍然符合 OpenAPI 2.0 是有意义的。为此,使用 Python Swagger 库在生成点提供验证,并且可以通过传递validators=['ssv']get_schema_view; 如果生成的模式无效,SwaggerValidationError则处理编解码器会引发 a。

要提供内置验证机制,您可以安装额外的要求:

pip install drf-yasg2[validation]

用法

查看现场演示!

将包添加到 INSTALLED_APPS:

   INSTALLED_APPS = [
      ...
      'drf_yasg2',
      ...
   ]

将端点添加到 urlpatterns:

   from django.urls import path, re_path
   from rest_framework import permissions
   from drf_yasg2.views import get_schema_view
   from drf_yasg2 import openapi

   ...

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

   urlpatterns = [
      re_path(r'^swagger(?P<format>\.json|\.yaml)$', 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 个端点:

  • 您的 API 规范的 JSON 视图,位于/swagger.json
  • 您的 API 规范的 YAML 视图,位于/swagger.yaml
  • 您的 API 规范的 swagger-ui 视图,位于/swagger/
  • API 规范的 ReDoc 视图,位于/redoc/

文档

完整文档变更日志中提供了更多详细信息。

要在本地生成文档:

scripts/docs.sh

测试

运行测试:

tox

贡献

请阅读CONTRIBUTING.md了解我们的行为准则以及提交拉取请求的流程的详细信息。

版本控制

SemVer用于版本控制。有关可用版本的列表,请参阅此存储库上的标签。

作者

这个项目来自drf-yasg归功于 Cristi Vîjdea和原始贡献者。

非常感谢参与这个项目的贡献者。看看贡献

执照

该项目根据 BSD 3-Clause License 获得许可 - 请参阅LICENSE.md文件了解详细信息

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

drf_yasg2-1.19.4.tar.gz (1.5 MB 查看哈希

已上传 source

内置分布

drf_yasg2-1.19.4-py3-none-any.whl (1.6 MB 查看哈希

已上传 py3