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 相关文章推荐
用PyQt进行Python图形界面的程序的开发的入门指引
Apr 14 Python
python中的lambda表达式用法详解
Jun 22 Python
Django restframework 源码分析之认证详解
Feb 22 Python
聊聊python里如何用Borg pattern实现的单例模式
Jun 06 Python
余弦相似性计算及python代码实现过程解析
Sep 18 Python
pandas按行按列遍历Dataframe的几种方式
Oct 23 Python
Python笔记之观察者模式
Nov 20 Python
Django重设Admin密码过程解析
Feb 10 Python
python实现扫雷小游戏
Apr 24 Python
Python 制作查询商品历史价格的小工具
Oct 20 Python
python基于爬虫+django,打造个性化API接口
Jan 21 Python
OpenCV全景图像拼接的实现示例
Jun 05 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
苏联队长,苏联超人蝙蝠侠,这些登场的“山寨”英雄真的很严肃
2020/04/09 欧美动漫
Laravel重写用户登录简单示例
2016/10/08 PHP
PHP mysqli事务操作常用方法分析
2017/07/22 PHP
php菜单/评论数据递归分级算法的实现方法
2019/08/01 PHP
一种JavaScript的设计模式
2006/11/22 Javascript
用javascript实现兼容IE7的类库 IE7_0_9.zip提供下载
2007/08/08 Javascript
javascript当onmousedown、onmouseup、onclick同时应用于同一个标签节点Element
2010/01/05 Javascript
jquery如何判断某元素是否具备指定的样式
2013/11/05 Javascript
jquery ajax应用中iframe自适应高度问题解决方法
2014/04/12 Javascript
JS点击链接后慢慢展开隐藏着图片的方法
2015/02/17 Javascript
JavaScript实现简单Tip提示框效果
2016/04/20 Javascript
基于javascript编写简单日历
2016/05/02 Javascript
AngularJS入门教程之过滤器详解
2016/08/19 Javascript
使用Xcache缓存器加速PHP网站的配置方法
2017/04/22 Javascript
简单实现节流函数和防抖函数过程解析
2019/10/08 Javascript
angularjs模态框的使用代码实例
2019/12/20 Javascript
通过实例解析JavaScript常用排序算法
2020/09/02 Javascript
Python 文件和输入输出小结
2013/10/09 Python
详解Python中的多线程编程
2015/04/09 Python
Python函数参数类型*、**的区别
2015/04/11 Python
python使用multiprocessing模块实现带回调函数的异步调用方法
2015/04/18 Python
Python 查找list中的某个元素的所有的下标方法
2018/06/27 Python
python+rsync精确同步指定格式文件
2019/08/29 Python
python 安装教程之Pycharm安装及配置字体主题,换行,自动更新
2020/03/13 Python
浅谈python量化 双均线策略(金叉死叉)
2020/06/03 Python
英国顶级家庭折扣店:The Works
2017/09/06 全球购物
纽约香氛品牌:NEST Fragrance
2018/10/15 全球购物
广州品高软件.net笔面试题目
2012/04/18 面试题
董事长秘书岗位职责
2013/11/29 职场文书
促销活动计划书
2014/05/02 职场文书
中国梦口号
2014/06/13 职场文书
建筑工程挂靠协议书
2016/03/23 职场文书
python实现大文本文件分割成多个小文件
2021/04/20 Python
python实现图片九宫格分割的示例
2021/04/25 Python
JavaScript实现简单拖拽效果
2021/09/15 Javascript
java中为什么说子类的构造方法默认访问的是父类的无参构造方法
2022/04/13 Java/Android