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脚本实现格式化css文件
Apr 08 Python
使用python3.5仿微软记事本notepad
Jun 15 Python
Python可变参数用法实例分析
Apr 02 Python
Python升级导致yum、pip报错的解决方法
Sep 06 Python
python去掉 unicode 字符串前面的u方法
Oct 21 Python
python pytest进阶之xunit fixture详解
Jun 27 Python
django 微信网页授权认证api的步骤详解
Jul 30 Python
Pytorch 抽取vgg各层并进行定制化处理的方法
Aug 20 Python
Python手绘可视化工具cutecharts使用实例
Dec 05 Python
简单了解Python3 bytes和str类型的区别和联系
Dec 19 Python
python求numpy中array按列非零元素的平均值案例
Jun 08 Python
python基本算法之实现归并排序(Merge sort)
Sep 01 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
Ajax+PHP边学边练 之五 图片处理
2009/12/03 PHP
PHP flush()与ob_flush()的区别详解
2013/06/03 PHP
PHP程序漏洞产生的原因分析与防范方法说明
2014/03/06 PHP
Windows下安装PHP单元测试环境PHPUnit图文教程
2014/10/24 PHP
CodeIgniter控制器之业务逻辑实例分析
2016/01/20 PHP
关于PHP 如何用 curl 读取 HTTP chunked 数据
2016/02/26 PHP
PHP实现一维数组与二维数组去重功能示例
2018/05/24 PHP
use jscript Create a SQL Server database
2007/06/16 Javascript
javascript删除一个html元素节点的方法
2014/12/20 Javascript
8个超实用的jQuery功能代码分享
2015/01/08 Javascript
js格式化时间的方法
2015/12/18 Javascript
JavaScript将DOM事件处理程序封装为event.js 出现的低级错误问题
2016/08/03 Javascript
jQuery Dialog 打开时自动聚焦的解决方法(两种方法)
2016/11/24 Javascript
Angularjs自定义指令实现三级联动 选择地理位置
2017/02/13 Javascript
详解JS中的attribute属性
2017/04/25 Javascript
angular2路由切换改变页面title的示例代码
2017/08/23 Javascript
Vue添加请求拦截器及vue-resource 拦截器使用
2017/11/23 Javascript
动态加载JavaScript文件的3种方式
2018/05/05 Javascript
Vue实现6位数密码效果
2018/08/18 Javascript
浅谈 Webpack 如何处理图片(开发、打包、优化)
2019/05/15 Javascript
js实现GIF图片的分解和合成
2019/10/24 Javascript
[59:59]EG vs IG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
理解Python中的With语句
2015/02/02 Python
Python学习笔记之lambda表达式用法详解
2019/08/08 Python
解析Python3中的Import
2019/10/13 Python
CSS3实现粒子旋转伸缩加载动画
2016/04/22 HTML / CSS
美国隐形眼镜网:Major Lens
2018/02/09 全球购物
波兰运动鞋网上商店:Distance.pl
2020/07/30 全球购物
写好自荐信的要点
2013/11/06 职场文书
原料仓管员岗位职责
2014/04/12 职场文书
活动总结范文
2014/08/30 职场文书
2015年母亲节寄语
2015/03/23 职场文书
个人工作违纪检讨书
2015/05/05 职场文书
三年级作文之小小梦想
2019/12/06 职场文书
js Proxy的原理详解
2021/05/25 Javascript
天谕手游15杯全调酒配方和调酒券的获得方式
2022/04/06 其他游戏