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发送邮件实例讲解(python发邮件附件可以使用email模块实现)
Dec 03 Python
介绍Python中的fabs()方法的使用
May 14 Python
Python随机生成手机号、数字的方法详解
Jul 21 Python
Python内置模块ConfigParser实现配置读写功能的方法
Feb 12 Python
python中abs&map&reduce简介
Feb 20 Python
python计算二维矩形IOU实例
Jan 18 Python
解决tensorflow添加ptb库的问题
Feb 10 Python
Python识别html主要文本框过程解析
Feb 18 Python
基于Python计算圆周率pi代码实例
Mar 25 Python
如何导出python安装的所有模块名称和版本号到文件中
Jun 05 Python
Django配置Bootstrap, js实现过程详解
Oct 13 Python
解决Pytorch中关于model.eval的问题
May 22 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
为什么夜间收到的中波电台比白天多
2021/03/01 无线电
PHP中=赋值操作符对不同数据类型的不同行为
2011/01/02 PHP
PHP内核介绍及扩展开发指南―基础知识
2011/09/11 PHP
php创建图像具体步骤
2017/03/13 PHP
PHP开发实现微信退款功能示例
2017/11/25 PHP
Thinkphp5+Redis实现商品秒杀代码实例讲解
2020/12/29 PHP
document.all与WEB标准
2020/05/13 Javascript
jQuery入门第一课 jQuery选择符
2010/03/14 Javascript
extjs grid设置某列背景颜色和字体颜色的方法
2010/09/03 Javascript
有关javascript的性能优化 (repaint和reflow)
2013/04/12 Javascript
javascript 动态创建表格
2015/01/08 Javascript
最佳的JavaScript错误处理实践
2016/07/16 Javascript
AngularJs页面筛选标签小功能
2016/08/01 Javascript
基于vue实现分页/翻页组件paginator示例
2017/03/09 Javascript
vue绑定的点击事件阻止冒泡的实例
2018/02/08 Javascript
解决vue数据不实时更新的问题(数据更改了,但数据不实时更新)
2020/10/27 Javascript
[50:54]完美世界DOTA2联赛 GXR vs IO 第三场 11.07
2020/11/10 DOTA
python缩进区别分析
2014/02/15 Python
wxPython定时器wx.Timer简单应用实例
2015/06/03 Python
python3实现抓取网页资源的 N 种方法
2017/05/02 Python
Python查询IP地址归属完整代码
2017/06/21 Python
Python字符串匹配之6种方法的使用详解
2019/04/08 Python
在django中实现页面倒数几秒后自动跳转的例子
2019/08/16 Python
使用python matplotlib 画图导入到word中如何保证分辨率
2020/04/16 Python
解决python中import文件夹下面py文件报错问题
2020/06/01 Python
python中pandas库中DataFrame对行和列的操作使用方法示例
2020/06/14 Python
python中逻辑与或(and、or)和按位与或异或(&、|、^)区别
2020/08/05 Python
基于Python正确读取资源文件
2020/09/14 Python
联想马亚西亚官方网站:Lenovo Malaysia
2018/09/19 全球购物
《海伦?凯勒》教学反思
2014/04/17 职场文书
篮球比赛拉拉队口号
2014/06/10 职场文书
社会工作专业自荐信
2014/09/26 职场文书
离婚撤诉申请书范本
2015/05/18 职场文书
如何用JavaScript学习算法复杂度
2021/04/30 Javascript
Python实现随机生成迷宫并自动寻路
2021/06/13 Python
Sql Server之数据类型详解
2022/02/28 SQL Server