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正则表达式如何进行字符串替换实例
Dec 28 Python
Python SqlAlchemy动态添加数据表字段实例解析
Feb 07 Python
基于pandas数据样本行列选取的方法
Apr 20 Python
python3之模块psutil系统性能信息使用
May 30 Python
使用Python监控文件内容变化代码实例
Jun 04 Python
浅谈Pycharm调用同级目录下的py脚本bug
Dec 03 Python
python实现多张图片拼接成大图
Jan 15 Python
强悍的Python读取大文件的解决方案
Feb 16 Python
基于Python实现用户管理系统
Feb 26 Python
pytorch中 gpu与gpu、gpu与cpu 在load时相互转化操作
May 25 Python
基于OpenCV的路面质量检测的实现
Nov 04 Python
如何通过Python实现RabbitMQ延迟队列
Nov 28 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
关于手调机和数调机的选择
2021/03/02 无线电
mysql5详细安装教程
2007/01/15 PHP
隐藏X-Space个人空间下方版权方法隐藏X-Space个人空间标题隐藏X-Space个人空间管理版权方法
2007/02/22 PHP
PHP图片等比例缩放生成缩略图函数分享
2014/06/10 PHP
php中数字、字符与对象判断函数用法实例
2014/11/26 PHP
PHPExcel内存泄漏问题解决方法
2015/01/23 PHP
php打印一个边长为N的实心和空心菱型的方法
2015/03/02 PHP
php 生成Tab键或逗号分隔的CSV
2016/09/24 PHP
由php中字符offset特征造成的绕过漏洞详解
2017/07/07 PHP
PHP xpath()函数讲解
2019/02/11 PHP
php字符串函数 str类常见用法示例
2020/05/15 PHP
JQUERY的属性选择符和自定义选择符使用方法(二)
2011/04/07 Javascript
JavaScript中常用的运算符小结
2012/01/18 Javascript
JS实现关键字搜索时的相关下拉字段效果
2014/08/05 Javascript
jQuery控制cookie过期时间的方法
2015/04/07 Javascript
微信JSSDK上传图片
2015/08/23 Javascript
深入解析JavaScript的闭包机制
2015/10/20 Javascript
简单讲解AngularJS的Routing路由的定义与使用
2016/03/05 Javascript
javascript笔记之匿名函数和闭包
2017/02/06 Javascript
Node.js简单入门前传
2017/08/21 Javascript
使用nvm管理不同版本的node与npm的方法
2017/10/31 Javascript
实现div内部滚动条滚动到底部和顶部的代码
2017/11/15 Javascript
React中的render何时执行过程
2018/04/13 Javascript
微信小程序scroll-view实现滚动穿透和阻止滚动的方法
2018/08/20 Javascript
npm配置国内镜像资源+淘宝镜像的方法
2018/09/07 Javascript
详解ES6 Promise对象then方法链式调用
2018/10/20 Javascript
vue将后台数据时间戳转换成日期格式
2019/07/31 Javascript
微信小程序登录时如何获取input框中的内容
2019/12/04 Javascript
vue-cli4项目开启eslint保存时自动格式问题
2020/07/13 Javascript
python实现dict版图遍历示例
2014/02/19 Python
python 字符串追加实例
2019/07/20 Python
实习计划书范文
2015/01/16 职场文书
2015年小学重阳节活动总结
2015/07/29 职场文书
导游词之山西-五老峰
2019/10/07 职场文书
vue中的可拖拽宽度div的实现示例
2022/04/08 Vue.js
golang使用map实现去除重复数组
2022/04/14 Golang