Swagger能成爲最受歡迎的REST APIs文檔生成工具之一,有如下幾個緣由:django
下面就實戰django rest swagger爲drf生成api接口文檔json
pip install django==1.11.6 pip instal djangorestframework pip install django-rest-swagger
startproject apitest startapp api
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', # 加入如下 'api', '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, }
# 序列化 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 django.contrib.auth.models import User,Group from rest_framework import viewsets from api.serializers import UserSerializer,GroupSerializer # Create your views here. class UserViewSet(viewsets.ModelViewSet): '''查看,編輯用戶的界面''' queryset = User.objects.all().order_by('-date_joined') serializer_class = UserSerializer class GroupViewSet(viewsets.ModelViewSet): '''查看,編輯組的界面''' queryset = Group serializer_class = GroupSerializer
from django.conf.urls import url,include from django.contrib import admin from rest_framework import routers from api import views # 路由 router = routers.DefaultRouter() router.register(r'users',views.UserViewSet,base_name='user') router.register(r'groups',views.GroupViewSet,base_name='group') # 重要的是以下三行 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]) 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')) ]