环境准备
环境要求:
python3
django2
pip3
模块安装:
pip3 install django-rest-framework
pip3 install django-rest-swagger
搭建项目:
搭建django项目,创建testapi app
参数配置
setting.py:
视图编辑
编辑views.py
1 # Create your views here. 2 # -*- coding: utf-8 -*- 3 4 from rest_framework.views import APIView 5 6 from rest_framework.permissions import AllowAny 7 from rest_framework.schemas import SchemaGenerator 8 from rest_framework.schemas.generators import LinkNode, insert_into 9 from rest_framework.renderers import * 10 from rest_framework_swagger import renderers 11 from rest_framework.response import Response 12 13 # from rest_framework.schemas import SchemaGenerator 14 class MySchemaGenerator(SchemaGenerator): 15 16 def get_links(self, request=None): 17 # from rest_framework.schemas.generators import LinkNode, 18 links = LinkNode() 19 20 paths = [] 21 view_endpoints = [] 22 for path, method, callback in self.endpoints: 23 view = self.create_view(callback, method, request) 24 path = self.coerce_path(path, method, view) 25 paths.append(path) 26 view_endpoints.append((path, method, view)) 27 28 # Only generate the path prefix for paths that will be included 29 if not paths: 30 return None 31 prefix = self.determine_path_prefix(paths) 32 33 for path, method, view in view_endpoints: 34 if not self.has_view_permissions(path, method, view): 35 continue 36 link = view.schema.get_link(path, method, base_url=self.url) 37 # 添加下面这一行方便在views编写过程中自定义参数. 38 link._fields += self.get_core_fields(view) 39 40 subpath = path[len(prefix):] 41 keys = self.get_keys(subpath, method, view) 42 43 # from rest_framework.schemas.generators import LinkNode, insert_into 44 insert_into(links, keys, link) 45 46 return links 47 48 # 从类中取出我们自定义的参数, 交给swagger 以生成接口文档. 49 def get_core_fields(self, view): 50 return getattr(view, 'coreapi_fields', ()) 51 52 def DocParam(name="default", location="query", required=True, description=None, type="string", *args, **kwargs): 53 return coreapi.Field(name=name, location=location, required=required, description=description, type=type) 54 55 56 class ReturnJson(APIView): 61 coreapi_fields = ( #用于swagger doc显示方法必须字符串 62 DocParam("name", description='test'), 63 DocParam("nalanxiao", required=False, description='rohero'), 64 ) 65 def get(self, request, *args, **kwargs): 66 json_data = {'name': 'post', 'id': 0} 67 return Response(json_data) 68 69 def post(self, request, *args, **kwargs): 70 json_data = {'name': 'post', 'id': 0} 71 return Response(json_data)
路由设置
编辑urls.py
1 from django.conf.urls import url 8 from .views import SwaggerSchemaView, ReturnJson, StudentsApiView 9 10 urlpatterns = [ 12 url(r'^api/$', ReturnJson.as_view(), name='api'), 13 url(r'^api/v1/$', StudentsApiView.as_view(), name='api_v1'), 17 url(r'^docs/', SwaggerSchemaView.as_view(), name='apiDocs'), 18 ]
效果展示:
github:
https://github.com/Roherolxh/opstest
觉得有帮助望给个小星星