使用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
浏览器访问:
http://127.0.0.1:8081/swagger/
参考
Python3+ Django3:自动生成Swagger接口文档
访问文档出现错误'AutoSchema' object has no attribute 'get_link'](https://www.cnblogs.com/iiiiiher/p/11248456.html)