django-rest-swagger对API接口注释的方法


Posted in Python onAugust 29, 2019

Swagger是一个API开发者的工具框架,用于生成、描述、调用和可视化RESTful风格的Web服务。总体目标是使客户端和文件系统服务器以同样的速度来更新,方法,参数和模型紧密集成到服务器端的代码中,允许API始终保持同步。

在使用 django-rest-framework 进行API开发,可以使用django-rest-swagger接入swagger自动生成接口文档。

1. 安装django-rest-swagger

pip install django-rest-swagger

2.配置settings.py

INSTALLED_APPS = [
 ...

 'rest_framework_swagger'

 ...
]

3. views.py

该博文的项目是django-rest-framework中文站点的例子:https://q1mi.github.io/Django-REST-framework-documentation

当需要对接口的各种方法进行注释时,直接在该类下添加注释,如下所示。需要注意是的:注释的方法名称(如 get、post)要对应该类所含的方法名称

class SnippetList(generics.ListCreateAPIView):
 """
 get:
 Return all snippets.
 post:
 Create a new snippet instance.
 """

 queryset = Snippet.objects.all()
 serializer_class = SnippetSerializer
 permission_classes = (permissions.IsAuthenticatedOrReadOnly,)

 def perform_create(self, serializer):
 serializer.save(owner=self.request.user)


class SnippetDetail(generics.RetrieveUpdateDestroyAPIView):
 """
 get:
 Return a snippet instance.
 put:
 Update a snippet instance.
 patch:
 Update a snippet instance.
 delete:
 Delete a snippet instance.
 """
 queryset = Snippet.objects.all()
 serializer_class = SnippetSerializer
 permission_classes = (permissions.IsAuthenticatedOrReadOnly, IsOwnerOrReadOnly,)


class UserList(generics.ListAPIView):
 """
 get:
 Return all users
 """
 queryset = MyUser.objects.all()
 serializer_class = UserSerializer


class UserDetail(generics.RetrieveAPIView):
 """
 get:
 Return a user instance
 """
 queryset = MyUser.objects.all()
 serializer_class = UserSerializer


class SnippetHighlight(generics.GenericAPIView):
 """
 get:
 Return a highlight instance
 """
 queryset = Snippet.objects.all()
 renderer_classes = (renderers.StaticHTMLRenderer,)

 def get(self, request, *args, **kwargs):
 snippet = self.get_object()
 return Response(snippet.highlighted)

3.配置urls.py

from rest_framework.schemas import get_schema_view
from rest_framework_swagger.renderers import SwaggerUIRenderer, OpenAPICodec
schema_view = get_schema_view(title='API', renderer_classes=[SwaggerUIRenderer, OpenAPICodec])

urlpatterns = [
 
 ...

 url(r'docs/', schema_view, name='docs')

 ...
]

运行manage.py后,浏览器访问 http://127.0.0.1:8000/,可以看到以下内容:

django-rest-swagger对API接口注释的方法

访问 http://127.0.0.1:8000/docs/,可以看到接口文档如下:

django-rest-swagger对API接口注释的方法

点击打开snippets,可以看到如下,每个方法后面都有你在views.py中添加的注释

django-rest-swagger对API接口注释的方法

点击打开get方法,如下

django-rest-swagger对API接口注释的方法

以上这篇django-rest-swagger对API接口注释的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
浅谈Python 中整型对象的存储问题
May 16 Python
python实现下载整个ftp目录的方法
Jan 17 Python
Django objects.all()、objects.get()与objects.filter()之间的区别介绍
Jun 12 Python
浅谈python内置变量-reversed(seq)
Jun 21 Python
Python实现解析Bit Torrent种子文件内容的方法
Aug 29 Python
pytorch多进程加速及代码优化方法
Aug 19 Python
调用其他python脚本文件里面的类和方法过程解析
Nov 15 Python
flask框架url与重定向操作实例详解
Jan 25 Python
python 装饰器的实际作用有哪些
Sep 07 Python
python实现一个简单RPC框架的示例
Oct 28 Python
教你怎么用Python监控愉客行车程
Apr 29 Python
python开发飞机大战游戏
Jul 15 Python
Python3视频转字符动画的实例代码
Aug 29 #Python
scikit-learn线性回归,多元回归,多项式回归的实现
Aug 29 #Python
python中property属性的介绍及其应用详解
Aug 29 #Python
django-rest-swagger的优化使用方法
Aug 29 #Python
使用虚拟环境打包python为exe 文件的方法
Aug 29 #Python
python实现最大优先队列
Aug 29 #Python
django连接oracle时setting 配置方法
Aug 29 #Python
You might like
Dedecms V3.1 生成HTML速度的优化办法
2007/03/18 PHP
php mssql扩展SQL查询中文字段名解决方法
2012/10/15 PHP
php cookie工作原理与实例详解
2016/07/18 PHP
PHP For循环字母A-Z当超过26个字母时输出AA,AB,AC
2020/02/16 PHP
基于jQuery的动态表格插件
2011/03/28 Javascript
IE与FF下javascript获取网页及窗口大小的区别详解
2014/01/14 Javascript
javascript封装的sqlite操作类实例
2015/07/17 Javascript
D3.js中data(), enter() 和 exit()的问题详解
2015/08/17 Javascript
JS封装cookie操作函数实例(设置、读取、删除)
2015/11/17 Javascript
Jquery中request和request.form和request.querystring的区别
2015/11/26 Javascript
Html5+jQuery+CSS制作相册小记录
2016/12/30 Javascript
JavaScript实现获取用户单击body中所有A标签内容的方法
2017/06/05 Javascript
分享19个JavaScript 有用的简写写法
2017/07/07 Javascript
react 实现页面代码分割、按需加载的方法
2018/04/03 Javascript
webpack4.x开发环境配置详解
2018/08/04 Javascript
Angular中的ng-template及angular 使用ngTemplateOutlet 指令的方法
2018/08/08 Javascript
Vue2.x和Vue3.x的双向绑定原理详解
2020/11/05 Javascript
vue watch监控对象的简单方法示例
2021/01/07 Vue.js
写了个监控nginx进程的Python脚本
2012/05/10 Python
树莓派中python获取GY-85九轴模块信息示例
2013/12/05 Python
python求素数示例分享
2014/02/16 Python
python实现redis三种cas事务操作
2017/12/19 Python
django-csrf使用和禁用方式
2020/03/13 Python
德国最大的拼图在线商店:Puzzle.de
2016/12/17 全球购物
国外最大的眼镜网站:Coastal
2017/08/09 全球购物
环境科学专业个人求职信
2013/09/26 职场文书
CNC数控操作工岗位职责
2013/11/19 职场文书
医务工作者先进事迹材料
2014/01/26 职场文书
保安岗位职责
2014/02/21 职场文书
小学生元旦感言
2014/02/26 职场文书
村干部四风问题整改措施
2014/09/30 职场文书
MySQL修改默认引擎和字符集详情
2021/09/25 MySQL
Springboot/Springcloud项目集成redis进行存取的过程解析
2021/12/04 Redis
python中的sys模块和os模块
2022/03/20 Python
Java无向树分析 实现最小高度树
2022/04/09 Javascript
用PYTHON去计算88键钢琴的琴键频率和音高
2022/04/10 Python