环境准备
环境要求:
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 renderers11 from rest_framework.response import Response12 13 # from rest_framework.schemas import SchemaGenerator14 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 included29 if not paths:30 return None31 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 continue36 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_into44 insert_into(links, keys, link)45 46 return links47 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
觉得有帮助望给个小星星