This theme is built with awescnb.|

django使用swagger文档

django使用swagger文档

1.安装swagger

pip install drf-yasg2


在urls.py 中配置建议在总路由中配置
from django.urls import path, include, 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="Tweet API",
        default_version='v1',
        description="Welcome to the world of Tweet",
        terms_of_service="https://www.tweet.org",
        contact=openapi.Contact(email="demo@tweet.org"),
        license=openapi.License(name="Awesome IP"),
    ),
    public=True,
    permission_classes=(permissions.AllowAny,),
)

urlpatterns = [
    # swagger
    re_path(r'^doc(?P<format>\.json|\.yaml)$', schema_view.without_ui(cache_timeout=0), name='schema-json'),  # <-- 这里
    path('doc/', 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'),  # <-- 这里
    ##############################################################
]
'''
	配置完成之后可以在 浏览器中访问http://127.0.0.1:8000/doc/访问文档
'''

2.使用装饰器方式描述接口

目前主要用的参数:
    	method:请求方式
        methods:请求方式 ['GET','POST']
       	tags:接口分组,一组的接口会放一起
        operation_description:接口描述,描述接口的作用支持markdowm语法
        operation_summary:接口简单描述,出现在接口列表中的描述,方便接口列表中找到
        request_body:post请求携带的参数
        manual_parameters:GET请求携带的参数 name-参数名 in_-参数位置 description-参数描述 type-参数类型
1.导入装饰器
    from drf_yasg2.utils import swagger_auto_schema
    from drf_yasg2 import openapi
    
2.使用
	(1class Login(GenericViewSet):
    		queryset = User.objects.all()
    		serializer_class = LoginSerializer
            
            @swagger_auto_schema(tags=['用户登入'], operation_description='用户登入接口', operation_summary='用户登入',
                                 request_body=openapi.Schema(type=openapi.TYPE_OBJECT, properties={
                                     'username': openapi.Schema(type=openapi.TYPE_STRING, description='字符串', title='用户名'),
                                     'password': openapi.Schema(type=openapi.TYPE_STRING, description='字符串'),
                                 }))
             def create(self, request:Request)-> APIResponse:
                    '''
                        登入
                        :param username: 用户名
                        :param password: 密码
                    '''
                    ....
                    
                    return APIResponse()
           '''
           		当我们继承的是视图集时不需要写method或methods
           '''
(2)
	class Book(GenericViewSet):

    @swagger_auto_schema(operation_description='根据分页返回分页数据',operation_summary='返回对应数据',
                         manual_parameters=[
                             openapi.Parameter(name='page', in_=openapi.IN_QUERY, description='页数', type=openapi.TYPE_STRING,pattern='1'),
                   			openapi.Parameter(name='row', in_=openapi.IN_QUERY, description='一页的数据条数', type=openapi.TYPE_STRING)])
    def list(self, request):
		''''''
        return APIResponse()
    
    '''
    manual_parameters描述GET请求参数
    name --- 参数名称
    in_ --- 参数位置 
    		openapi.IN_QUERY "query" http://127.0.0.1:8000/api/v1/..../?page=1&row1  放在url中
    		openapi.IN_FORM "formData" 
    		openapi.IN_BODY "body"
    		openapi.IN_PATH "path"
    		openapi.IN_HEADER "header"
    		剩下的还没试,可自行尝试
    description --- 参数描述
    type --- 参数类型 
    		openapi.TYPE_STRING "string"
    		openapi.TYPE_OBJECT "object"
    		openapi.TYPE_ARRAY "array"
    		openapi.TYPE_FILE "file"
    		openapi.TYPE_NUMBER "number"
    		openapi.TYPE_BOOLEAM "boolean"
    		openapi.TYPE_INTEGER "integer"
    pattern --- 当type为openapi.TYPE_STRING时,可填 参数例子
    '''

本文作者:春游去动物园

本文链接:https://www.cnblogs.com/chunyouqudongwuyuan/p/17170914.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   春游去动物园  阅读(292)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
展开
  1. 1 生分 川青
生分 - 川青
00:00 / 00:00
An audio error has occurred.

生分 - 川青

词:莎子

曲:邵翼天

编曲:林亦

混音:罗杨轩

吉他:林亦

制作人:谢宇伦

监制:曾炜超/陈显

策划:+7

统筹:黄染染

出品:漫吞吞文化

『酷狗音乐人 • 星曜计划』

全方位推广,见证星力量!

「版权所有未经许可 不得商业翻唱或使用」

我们怎么变得那么生分

用了几年也没解开疑问

有些事你不提我也不问

在陌生与熟悉间找平衡

有些话一开口会伤人

有些话一开口会伤人

所以我选择默不作声

所以我选择默不作声

爱一个人

若甘愿陪衬

甘愿牺牲

也许换个名分

也不是没可能

我不怕在爱里做个蠢人

我不怕在爱里做个蠢人

也不怕爱过之后再分

也不怕爱过之后再分

爱一个人

有万种身份

万种可能

只是没想到

我们最后友人相称

我们怎么变得那么生分

我们怎么变得那么生分

连说话都要掌握好分寸

怕不注意流言

见缝插针

怕不小心我们

成陌生人

我们怎么变得那么生分

用了几年也没解开疑问

有些事你不提我也不问

在陌生与熟悉间找平衡

有些话一开口会伤人

有些话一开口会伤人

所以我选择默不作声

所以我选择默不作声

爱一个人

若甘愿陪衬

甘愿牺牲

也许换个名分

也不是没可能

我不怕在爱里做个蠢人

我不怕在爱里做个蠢人

也不怕爱过之后再分

也不怕爱过之后再分

爱一个人

有万种身份

万种可能

只是没想到我们最后

友人相称

我们怎么变得那么生分

连说话都要掌握好分寸

怕不注意流言见缝插针

怕不小心我们成陌生人

我们怎么变得那么生分

用了几年也没解开疑问

有些事你不提我也不问

在陌生与熟悉间找平衡

我们怎么变得那么生分

我们怎么变得那么生分

连说话都要掌握好分寸

怕不注意流言见缝插针

怕不小心我们成陌生人

我们怎么变得那么生分

用了几年也没解开疑问

有些事你不提我也不问

在陌生与熟悉间找平衡