Django 自动生成api接口文档教程


Posted in Python onNovember 19, 2019

最近在写测试平台,需要实现一个节点服务器的api,正好在用django,准备使用djangorestframework插件实现。

需求

实现一个接口,在调用时,通过传递的参数,直接运行对应项目的自动化测试

环境

Python3.6 ,PyCharm,W7

项目结构

Django 自动生成api接口文档教程

功能实现

流程

Django 自动生成api接口文档教程

我们要做的就是实现以上流程

安装

pip install djangorestframework 
pip install markdown 
pip install django-filter # Filtering support

配置

INSTALLED_APPS = (
 ...
 'rest_framework',
)

编写代码(本次代码不涉及数据库操作,只简单的写一个api)

①:打开AutoApi/Api/views.py 编写如下代码

from django.http import JsonResponse, HttpResponseNotAllowed, HttpResponse
from django.views.decorators.csrf import csrf_exempt
from rest_framework.parsers import JSONParser
from rest_framework import status

@csrf_exempt
def run_job(request):
 # 判断请求头是否为json
 if request.content_type != 'application/json': 
  # 如果不是的话,返回405
  return HttpResponse('only support json data', status=status.HTTP_415_UNSUPPORTED_MEDIA_TYPE)
 # 判断是否为post 请求
 if request.method == 'POST':
  try:
   # 解析请求的json格式入参
   data = JSONParser().parse(request)
  except Exception as why:
   print(why.args)
  else:
   content = {'msg': 'SUCCESS'}
   print(data)
   # 返回自定义请求内容content,200状态码
   return JsonResponse(data=content, status=status.HTTP_200_OK)
 # 如果不是post 请求返回不支持的请求方法
 return HttpResponseNotAllowed(permitted_methods=['POST'])

②:打开AutoApi/Api/urls.py 编写如下代码

from django.conf.urls import url
from Api import views

urlpatterns = [
 url(r'^runJob/$',views.run_job),
]

③:打开AutoApi/AutoApi/urls.py 修改如下代码

ALLOWED_HOSTS = '*' # 修改为* 代码允许任意host


from django.conf.urls import url,include

urlpatterns = [
 url(r'^admin/', admin.site.urls),
 url(r'^',include('Api.urls')),# 新增
]

④:启动服务

python manage.py runserver 0.0.0.0:8080

Django 自动生成api接口文档教程

⑤:我们请求试试看

Django 自动生成api接口文档教程

以上就是简单的实现一个api ,其实开发说的接口就这么简单,没有那么神秘!

接下来把post 的数据env ,project,cases 解析出来传给对应的自动化测试入口函数,就可以实现通过接口请求,启动自动化测试的目的。

后续

实现接口调用自动化测试项目

实现异步接口

实现定时任务

这篇Django 自动生成api接口文档教程就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python函数返回值实例分析
Jun 08 Python
详解python发送各类邮件的主要方法
Dec 22 Python
浅谈python中的数字类型与处理工具
Aug 02 Python
python numpy格式化打印的实例
May 14 Python
python中单下划线_的常见用法总结
Jul 10 Python
TensorFlow用expand_dim()来增加维度的方法
Jul 26 Python
Python使用post及get方式提交数据的实例
Jan 24 Python
Python学习笔记之函数的定义和作用域实例详解
Aug 13 Python
python try except返回异常的信息字符串代码实例
Aug 15 Python
Python3和pyqt5实现控件数据动态显示方式
Dec 13 Python
Django框架之中间件MiddleWare的实现
Dec 30 Python
Python格式化输出--%s,%d,%f的代码解析
Apr 29 Python
wxpython实现按钮切换界面的方法
Nov 19 #Python
Python性能分析工具Profile使用实例
Nov 19 #Python
使用apiDoc实现python接口文档编写
Nov 19 #Python
wxPython绘图模块wxPyPlot实现数据可视化
Nov 19 #Python
Python浮点数四舍五入问题的分析与解决方法
Nov 19 #Python
python 上下文管理器及自定义原理解析
Nov 19 #Python
浅析python中while循环和for循环
Nov 19 #Python
You might like
PHP注释实例技巧
2008/10/03 PHP
php类声明和php类使用方法示例分享
2014/03/29 PHP
PHP Curl出现403错误的解决办法
2014/05/29 PHP
php curl 模拟登录并获取数据实例详解
2016/12/22 PHP
js压缩利器
2007/02/20 Javascript
jQuery 添加/移除CSS类实现代码
2010/02/11 Javascript
跨浏览器的事件对象介绍
2012/06/27 Javascript
jquery中插件实现自动添加用户的具体代码
2013/11/15 Javascript
jQuery+Ajax实现无刷新分页
2015/10/30 Javascript
JavaScript的History API使搜索引擎抓取AJAX内容
2015/12/07 Javascript
基于Bootstrap重置输入框内容按钮插件
2016/05/12 Javascript
IONIC自定义subheader的最佳解决方案
2016/09/22 Javascript
jQuery EasyUI 页面加载等待及页面等待层
2017/02/06 Javascript
Vue声明式渲染详解
2017/05/17 Javascript
javascript 通过键名获取键盘的keyCode方法
2017/12/31 Javascript
推荐15个最好用的JavaScript代码压缩工具
2019/02/13 Javascript
Vue获取页面元素的相对位置的方法示例
2020/02/05 Javascript
小程序websocket心跳库(websocket-heartbeat-miniprogram)
2020/02/23 Javascript
[24:42]VP vs TNC Supermajor小组赛B组 BO3 第三场 6.2
2018/06/03 DOTA
Python-基础-入门 简介
2014/08/09 Python
Python生成随机密码的方法
2017/06/16 Python
Python实现全排列的打印
2018/08/18 Python
python判断完全平方数的方法
2018/11/13 Python
python 扩展print打印文件路径和当前时间信息的实例代码
2019/10/11 Python
Python使用qrcode二维码库生成二维码方法详解
2020/02/17 Python
python 用struct模块解决黏包问题
2020/11/07 Python
King Apparel官网:英国街头服饰品牌
2019/09/05 全球购物
别名指示符是什么
2012/10/08 面试题
团队经理竞聘书
2014/03/31 职场文书
学校工作推荐信范文
2014/07/11 职场文书
销售竞赛活动方案
2014/08/23 职场文书
司机工作自我鉴定
2014/09/19 职场文书
杭州黄龙洞导游词
2015/02/10 职场文书
运动会开幕式新闻稿
2015/07/17 职场文书
大学学生会主席竞选稿怎么写?
2019/08/19 职场文书
MySQL表字段数量限制及行大小限制详情
2022/07/23 MySQL