Django Rest Swagger生成api文档

作者: 杰伊_约翰 | 来源:发表于2019-07-20 10:15 被阅读5次

    他来了,他来了,,,

    可能你正在为写接口文档而发愁,,,

    啊啊啊啊,,,到底该怎么办呢?

    那么今天跟大家来说一下关于接口文档的事情
    django有一个自带的rest swagger ,这个模块可以帮助你生成接口文档,或者你可以将你需要的内容拿出来。

    • Swagger 可以生成一个具有互动性的API控制台,开发者可以用来快速学习和尝试API。
    • Swagger 可以生成客户端SDK代码用于各种不同的平台上的实现。
    • Swagger 文件可以在许多不同的平台上从代码注释中自动生成。
    • Swagger 有一个强大的社区,里面有许多强悍的贡献者。

    接下来具体介绍该怎么用它,很简单,跟着步骤配置就好

    环境

    Python3.6
    Django1.11
    django-rest-swagger
    djangorestframework

    安装

    pip install django==1.11.6
    pip instal djangorestframework
    pip install django-rest-swagger

    如果你已经有创建完成的项目,那么只需要添加上本文的配置,否则你需要新建

    startproject projectname
    startapp appname

    项目目录/settings.py

    INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'store',    # 这里写你自己的app名字
        'rest_framework', 
        'rest_framework_swagger',  # 接口文档模块
    ]
    
    
    # swagger 配置项
    SWAGGER_SETTINGS = {
        # 基础样式
        'SECURITY_DEFINITIONS': {
            "basic":{
                'type': 'basic'
            }
        },
        # 如果需要登录才能够查看接口文档, 登录的链接使用restframework自带的.
        'LOGIN_URL': 'rest_framework:login',
        'LOGOUT_URL': 'rest_framework:logout',
        # 'DOC_EXPANSION': None,
        # 'SHOW_REQUEST_HEADERS':True,
        # 'USE_SESSION_AUTH': True,
        # 'DOC_EXPANSION': 'list',
        # 接口文档中方法列表以首字母升序排列
        'APIS_SORTER': 'alpha',
        # 如果支持json提交, 则接口文档中包含json输入框
        'JSON_EDITOR': True,
        # 方法列表字母排序
        'OPERATIONS_SORTER': 'alpha',
        'VALIDATOR_URL': None,
    }
    

    序列化 store/serializer.py

    我这里是store,你需要创建在自己的app下,下面的原封不动的复制到serializer.py文件中。

    # 序列化 接口文档
    from django.contrib.auth.models import User,Group
    from  rest_framework import serializers
    
    class UserSerializer(serializers.HyperlinkedModelSerializer):
        class Meta:
            model = User
            fields = "__all__"
    class GroupSerializer(serializers.HyperlinkedModelSerializer):
        class Meta:
            model =Group
            fields = "__all__"
    

    配置视图函数文件

    # 接口文档视图
    from store.serializers import UserSerializer,GroupSerializer
    #这里的目录一定得是你自己的app下
    
    #下面的只管复制就可以啦!
    from  django.contrib.auth.models import User,Group
    
    from rest_framework import viewsets
    
    class UserViewSet(viewsets.ModelViewSet):
        '''查看,编辑用户的界面'''
        queryset = User.objects.all().order_by('-date_joined')
        serializer_class = UserSerializer
    
    class GroupViewSet(viewsets.ModelViewSet):
        '''查看,编辑组的界面'''
        queryset = Group
        serializer_class = GroupSerializer
    

    配置urls.py 文件

    from django.conf.urls import url, include
    from django.contrib import admin
    from store.views import UserViewSet, GroupViewSet
    from rest_framework import routers
    
    from rest_framework.schemas import get_schema_view
    from rest_framework_swagger.renderers import SwaggerUIRenderer, OpenAPIRenderer
    
    schema_view = get_schema_view(title='Users API', renderer_classes=[OpenAPIRenderer, SwaggerUIRenderer])
    
    #自动路由匹配
    router = routers.DefaultRouter()
    router.register(r'users', UserViewSet, base_name='user')
    router.register(r'groups', GroupViewSet, base_name='group')
    
    urlpatterns = [
        # swagger接口文档路由
        url(r'^docs/', schema_view, name="docs"),
        url(r'^admin/', admin.site.urls),
        url(r'^', include(router.urls)),
        # drf登录
        url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework')),
    
    ]
    

    说了这么多,最后上效果图
    浏览器里输入网址


    image.png image.png

    相关文章

      网友评论

        本文标题:Django Rest Swagger生成api文档

        本文链接:https://www.haomeiwen.com/subject/ursylctx.html