zoukankan      html  css  js  c++  java
  • 使用Django Rest Framework 撰写 Restful API 生成Swagger 接口文档

    基本环境

    • Django 3.1.1
    • djangorestframework 3.11.1
    • drf-yasg
    • django-rest-swagger #在django 3.0中已经不支持该库了,取而代之的是全新的第三方drf-yasg

    项目配置

    settings.py

    INSTALLED_APPS = [
        ...
        'drf_yasg',
        'rest_framework',
    ]
    
    
    REST_FRAMEWORK = {
        'DEFAULT_SCHEMA_CLASS': 'rest_framework.schemas.coreapi.AutoSchema'
    }
    

    urls.py

    from django.contrib import admin
    from django.urls import path,include
    from drf_yasg.views import get_schema_view
    from drf_yasg import openapi
    from rest_framework import routers,permissions
    
    
    schema_view = get_schema_view(
       openapi.Info(
          title="资产管理API",
          default_version='v1.0',
          description="资产管理接口文档",
          terms_of_service="https://www.cnblogs.com/gooooodmorning/",
          contact=openapi.Contact(email="l_px@live.cn"),
          license=openapi.License(name="BSD License"),
       ),
       public=True,
       permission_classes=(permissions.AllowAny,),
    )
    
    urlpatterns = [
        path('admin/', admin.site.urls),
        path(r'',include('assets.urls')),
        
        # 配置drf-yasg路由
        path('^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('docs/', schema_view.with_ui('redoc', cache_timeout=0), name='schema-docs'),
    ]
    

    APP配置(API接口)

    serializers.py

    from rest_framework import  serializers
    from .models import *
    
    
    class TypeNameSerializer(serializers.ModelSerializer):
        class Meta:
            model = TypeName
            fields = ('id', 'name')
    

    urls.py

    from django.urls import path,include
    from .views import *
    from rest_framework import  routers
    
    router = routers.SimpleRouter()
    router.register(r'typename',TypeNameViewSet,basename="typename")
    
    urlpatterns =  [
        path(r'api/',include(router.urls)),
    ]
    

    views.py

    from rest_framework.viewsets import  ModelViewSet
    from .models import *
    from .serializers import *
    from rest_framework.filters import  SearchFilter,OrderingFilter
    
    
    class TypeNameViewSet(ModelViewSet):
        '''
        类型名称: 增删改查
        '''
        queryset = TypeName.objects.all()
        serializer_class = TypeNameSerializer
        filter_backends = (SearchFilter,OrderingFilter)
    

    测试访问

    python manage.py runserver 0.0.0.0:8081
    

    mark

    浏览器访问:

    http://127.0.0.1:8081/docs/

    mark

    http://127.0.0.1:8081/swagger/

    mark

    参考

    Python3+ Django3:自动生成Swagger接口文档

    访问文档出现错误'AutoSchema' object has no attribute 'get_link'](https://www.cnblogs.com/iiiiiher/p/11248456.html)

  • 相关阅读:
    杭电ACM 1197
    杭电ACM 1196
    杭电ACM题目分类
    杭电ACM 1178
    指针转化(二重)
    怎么查看一个类的内存分布
    how find out what is causing Visual Studio to think each project is out of date
    MSB8013
    File mapping
    SHFileOperation 解决double-null terminated
  • 原文地址:https://www.cnblogs.com/gooooodmorning/p/13671875.html
Copyright © 2011-2022 走看看