复制代码
1
2
3
4
5mock接口开发: 1.模拟没有开发好的接口,进行测试 2.给别人提供数据 flask:轻量级的web开发框架 alt+enter:自动导入模块
复制代码
1
2
3
4
5
6
7
8
9
10
11
12import flask,json server = flask.Flask(__name__) # __name__表示当前的python文件,server表示将当前的python文件当做一个服务 # 此句表示下一行定义的函数是一个接口(和函数定义必须挨着写),/login表示接口访问路径,server是上方定义的服务,route('')表示首页 @server.route('/login') def welcome():# 一个函数就是一个接口 data = {'code':0,'msg':'登录成功','session_id':'saddhjdgshgdscv'} return json.dumps(data,ensure_ascii=False) @server.route('/test') def test(): data = {'code':0,'msg':'test'} return json.dumps(data) # 表示返回json格式的字符串
复制代码
1
2
3
4
5
6# get请求 @server.route('/urlData') # get请求,参数在url里面 def urlData(): msg = flask.request.args.get('name') # 访问时需要带参数的get请求;name是需要传的参数,若有多个则传多个即可 return msg
复制代码
1
2
3
4
5
6
7
8
9
10
11
12# post请求 @server.route('/post1',methods=['post']) # post请求;methods=['post']表示此为post请求;可不写,默认为get请求 def post(): # get请求 u = flask.request.args.get('name') p = flask.request.args.get('passwd') # post请求,postman中form-data中key-value形式,需要postman访问 stu_name = flask.request.values.get('stu_name') stu_addr = flask.request.values.get('stu_addr') data = {'username':u,'passwd':p,'stu_name':stu_name,'stu_addr':stu_addr} return json.dumps(data,ensure_ascii=False)
复制代码
1
2
3
4
5
6
7
8
9
10
11# 参数是json格式(post请求) @server.route('/json1',methods=['post']) # 参数是json格式 def post_json(): if flask.request.is_json: stu_name = flask.request.json.get('stu_name') stu_addr = flask.request.json.get('stu_addr') data = {'stu_name': stu_name, 'stu_addr': stu_addr} return json.dumps(data, ensure_ascii=False) else: return json.dumps({'msg':'入参请传入json'}, ensure_ascii=False)
复制代码
1
2
3
4
5
6
7
8
9
10# 上传文件(post请求) @server.route('/upload',methods=['post']) def uploadFile(): file = flask.request.files.get("f") print(file.filename) # 获取到上传文件的文件名;file.filename可以获取到文件名 file.save(file.filename) # 保存 # path = r'E:图片壁纸'+file.filename # file.save(path) return json.dumps({'msg':'successful'}, ensure_ascii=False)
复制代码
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# 练习:获取数据库某张表的数据 # 操作数据库 import pymysql def op_mysql(sql:str): mysql_info = { 'host': 'XXX.XXX.XXX.XXX', 'port': XXX, 'password': 'XXX', 'user': 'XXX', 'db': 'jxz', 'charset': 'utf8', 'autocommit': True # 自动提交 } result = '执行完成' conn = pymysql.connect(**mysql_info) cur = conn.cursor(pymysql.cursors.DictCursor) #建立游标 cur.execute(sql) if sql.strip().lower().startswith('select'): # result = cur.fetchone() # 获取一条结果 result = cur.fetchall() # 获取所有结果 cur.close() conn.close() return result @server.route('/table_data') def get_table_data(): # 没有校验表是否存在 list = ['app_myuser','dsk_test','app_student','app_product'] table_name = flask.request.args.get('table_name') if table_name not in list: return json.dumps({'msg':'没有权限'}) limit = flask.request.args.get('limit','10') # 表中数据数量,10表示默认显示几条数据 if limit.isdigit(): sql = 'select * from %s limit %s;'%(table_name,limit) else: return json.dumps({'limit请传入一个整数!'}, ensure_ascii=False) return json.dumps(op_mysql(sql),ensure_ascii=False) server.run(host='0.0.0.0',port=8888,debug=True) # 启动服务,port是端口号,可以不指定,不指定时默认5000,debug=True表示修改代码后,会自动重启 # 只能写在所有接口最下面,否则下方的接口会未被启动;只能运行一个服务 # host='0.0.0.0'表示以本机的实际ip为访问地址,在同一个局域网中的,可以相互访问 # 不加host,访问地址为127.0.0.1,只能自己访问自己
复制代码
1
2
3
4
5
6说明: 上方两个接口都是写在定义的server服务下的 未加debug=True时,修改代码需要重启时,需要关闭之前的服务,或者使用停止服务上方的重启按钮进行重启,否则端口会被占用而报错 将程序分成各种类型文件时,导入其他文件时,主目录右击--Mark Directory as--Source root 即可成功使用被导入模块内容 导出已经安装的第三方模块:pip freeze > 导出文件名.txt 批量安装第三方模块:pip install -r 导出文件名.txt
复制代码
1
2上图设置后的,导入模块方式:
from . import tools # 在同一路径下时,可以使用.导入;使用方式:tools.xxx
from config import setting # 表示导入config中的setting
转载于:https://www.cnblogs.com/huoxn/p/10919242.html
最后
以上就是秀丽泥猴桃最近收集整理的关于Python-网络编程之mock(模拟)接口开发的全部内容,更多相关Python-网络编程之mock(模拟)接口开发内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复