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实现获取某天是某个月中的第几周
Feb 11 Python
使用PDB简单调试Python程序简明指南
Apr 25 Python
部署Python的框架下的web app的详细教程
Apr 30 Python
Python中max函数用法实例分析
Jul 17 Python
python生成随机图形验证码详解
Nov 08 Python
python简单实现操作Mysql数据库
Jan 29 Python
Python if语句知识点用法总结
Jun 10 Python
Python实现EXCEL表格的排序功能示例
Jun 25 Python
ML神器:sklearn的快速使用及入门
Jul 11 Python
python机器学习包mlxtend的安装和配置详解
Aug 21 Python
python实现文件分片上传的接口自动化
Nov 19 Python
pytorch中[..., 0]的用法说明
May 20 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 过滤器实现代码
2010/08/09 PHP
PHP垃圾回收机制引用计数器概念分析
2013/06/24 PHP
PHP 实现人民币小写转换成大写的方法及大小写转换函数
2017/11/17 PHP
Laravel开启跨域请求的方法
2019/10/13 PHP
PHP实现chrome表单请求数据转换为接口使用的json数据
2021/03/04 PHP
jQuery对象[0]是什么含义?
2010/07/31 Javascript
jQuery中绑定事件的命名空间详解
2011/04/05 Javascript
Jquery 实现table样式的设定
2015/01/28 Javascript
JQuery标签页效果实例详解
2015/12/24 Javascript
JS图片定时翻滚效果实现方法
2016/06/21 Javascript
JS刷新父窗口的几种方式小结(推荐)
2016/11/09 Javascript
xmlplus组件设计系列之按钮(2)
2017/04/26 Javascript
微信小程序 wx.request方法的异步封装实例详解
2017/05/18 Javascript
20170918 前端开发周报之JS前端开发必看
2017/09/18 Javascript
seajs下require书写约定实例分析
2018/05/16 Javascript
解决element-ui中下拉菜单子选项click事件不触发的问题
2018/08/22 Javascript
elementUI select组件默认选中效果实现的方法
2019/03/25 Javascript
javascript 对象 与 prototype 原型用法实例分析
2019/11/11 Javascript
javascript实现异形滚动轮播
2019/11/28 Javascript
jQuery操作元素的内容和样式完整实例分析
2020/01/10 jQuery
解决ant design vue中树形控件defaultExpandAll设置无效的问题
2020/10/26 Javascript
python实现文件分组复制到不同目录的例子
2014/06/04 Python
tensorflow TFRecords文件的生成和读取的方法
2018/02/06 Python
pyqt5的QWebEngineView 使用模板的方法
2018/08/18 Python
英国行业制服供应商:Alexandra
2019/09/14 全球购物
软件测试工程师面试问题精选
2016/10/28 面试题
公司年会晚宴演讲稿
2014/01/06 职场文书
花店创业计划书范文
2014/02/07 职场文书
法制宣传口号
2014/06/16 职场文书
绘画专业自荐信
2014/07/04 职场文书
2014年帮扶工作总结
2014/11/26 职场文书
2014年留守儿童工作总结
2014/12/10 职场文书
人事主管岗位职责
2015/02/04 职场文书
2015年化验室工作总结
2015/04/23 职场文书
关于空气污染危害的感想
2015/08/11 职场文书
解决使用了nginx获取IP地址都是127.0.0.1 的问题
2021/09/25 Servers