Django是一个常用的Python Web框架,而djangoswagger,作为Django的一部分,是一个将Django Rest framework(DRF)API自动生成为Swagger UI和模型类文档的工具,使得API文档化更加方便并可视化。在本文中,我们将分别从以下几个方面详细介绍djangoswagger的特点和用法。
一、安装和配置
安装djangoswagger可以使用pip命令:
pip install django-rest-swagger
紧接着,在你的DRF配置类文件中添加以下应用配置:
INSTALLED_APPS = [ ..., 'rest_framework_swagger', ]
启用REST framework的API文档格式化器:
REST_FRAMEWORK = { 'DEFAULT_SCHEMA_CLASS': 'rest_framework.schemas.coreapi.AutoSchema', 'DEFAULT_RENDERER_CLASSES': ( 'rest_framework.renderers.JSONRenderer', 'rest_framework.renderers.BrowsableAPIRenderer', 'rest_framework_swagger.renderers.OpenAPIRenderer', 'rest_framework_swagger.renderers.SwaggerUIRenderer', ) }
这样,你的djangoswagger配置就完成了。
二、使用swagger UI
djangoswagger的核心是Swagger UI,它可以方便地展示API文档的结构和参数。对于使用djangoswagger来说,想要在浏览器中显示Swagger UI很简单:
首先在你的Django项目的urls.py文件中添加以下代码段,注意需要导入urls,schema_view和get_swagger_view的声明:
from django.urls import path from rest_framework_swagger.views import get_swagger_view from rest_framework_schemas import get_schema_view schema_view = get_swagger_view(title='API Documents') urlpatterns = [ ..., path('api-docs/', schema_view), ]
然后,访问 ‘/api-docs/’ URL,就能看到你的API文档了。
三、编写API信息和参数
编写API信息和参数是djangoswagger的一个重要功能,同时也是开发者最需要关注的部分。通过在你的DRF视图类中添加djangoswagger的注解,API文档就能自动生成:
from rest_framework.decorators import api_view, authentication_classes, permission_classes, renderer_classes from rest_framework.response import Response from rest_framework.renderers import JSONRenderer from rest_framework_swagger.renderers import OpenAPIRenderer, SwaggerUIRenderer from rest_framework_swagger import renderers from rest_framework.authentication import BasicAuthentication from rest_framework.permissions import IsAuthenticated @api_view(['POST']) @authentication_classes([BasicAuthentication]) @permission_classes([IsAuthenticated]) @renderer_classes([JSONRenderer, OpenAPIRenderer, SwaggerUIRenderer]) def my_view(request): """ API 接口文档描述 --- 请求参数: - a: integer // 描述参数1 - b: string // 描述参数2 返回参数: - id: integer //返回参数1 - name: string //返回参数1 """ return Response({'message': 'Hello, Django Swagger!'})
通过上述代码我们完成了一个简单的API接口,能够将输入参数a、b返回并输出到接口中。其中注解中的描述信息更加直观地体现了API接口的输入输出参数与详细介绍。djangoswagger能够解析上述注解中的格式,从而自动展示在Swagger UI的API “操作”页面中,方便开发者查看。
四、使用Markdown格式
Swagger UI支持使用Markdown格式,让你不必受限于注解语法的规范,更加自由地书写API接口的详细介绍和示例代码。你可以在注解中标注Markdown格式字符串,以实现多样化的文本效果。
例如,接口简要介绍中我们用到了控制标签的方式,以实现更加清晰的显示效果:
@api_view(['POST']) @renderer_classes([JSONRenderer, OpenAPIRenderer, SwaggerUIRenderer]) def hello(request): """ ### 访问接口:/Hello/ * **功能** 获取Hello信息,主要用于测试访问接口是否正常。 * **请求参数** 无 * **返回参数** - `Hello` : string ,返回基本信息 """ return Response({'Hello': 'Hello,Django Swagger!'})
五、在方法级别上定义标签
默认情况下,Django Swagger会使用基于视图类的路由实例的支持,自动检测API接口的操作。如果你想在方法级别上定义标签、描述信息等元数据,djangoswagger也允许你这么做:
from drf_yasg.utils import swagger_auto_schema @swagger_auto_schema( method='post', request_body=openapi.Schema( type=openapi.TYPE_OBJECT, required=['username', 'password'], properties={ 'username': openapi.Schema(type=openapi.TYPE_STRING, description='用户名'), 'password': openapi.Schema(type=openapi.TYPE_STRING, description='密码') }), operation_description="注册填写信息" ) @api_view(['POST']) def register(request): """ 注册 """ serializer = UserSerializer(data=request.DATA) if serializer.is_valid(): serializer.save() return Response(serializer.data, status=status.HTTP_201_CREATED) else: return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
在上述代码中我们添加了一个名叫register的API方法,给它添加了一些元数据,如参数详细介绍、请求方式等。
六、结尾
Django Swagger作为Django的扩展在API文档自动生成方面发挥了很大的作用,使得API文档的编写变得更加灵活和便捷。通过学习本文的介绍和代码示例,我们相信读者能够掌握Django Swagger的主要用法并对接口文档的设计有更深入的了解。
原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/286051.html