python:接口开发flask模块
一、接口开发的作用
mock接口:模拟功能:
用处:
1、自己模拟要调用的接口,测试自己要模拟的各种情况
2、给别人提供数据,别人调我的接口,我把数据范湖给他
二、flask模块:
1.flask模块是轻量级的web开发框架.可以开发网站,也可以开发接口,主要用来开发接口、
缺点:操作数据库不方便
2、练习:
从数据库中获取数据:
import pymysql: #调用打开数据库的函数: def op_mysql(sql,many_tag=False): conn = pymysql.connect(host='116.14.2.00',user='cnz',password='123456', db='jxz',port=3306,charset='utf8', autocommit=True) cur = conn.cursor(pymysql.cursors.DictCursor) cur.execute(sql) if many_tag: result = cur.fetchall() else: result = cur.fetchone() cur.close() conn.close() return result server =flask.Flask(__name__) #把当前的py文件当做一个服务 @server.route('/login') #饰器,加上装饰器后,后边的函数就是一个接口。这里写的是什么,在访问的时候就要在末尾加什么 #写成/、/index都行 def login(): d={'code':'0','msg':'lalalalalala'} return json.dumps(d,ensure_ascii=False) server.run(host='0.0.0.0',port=8989,debug=True) #启动服务。默认端口号是5000 #host指定成0.0.0.0的时候别人可以访问,否则不能访问 #debug=True,每次运行可以不用重新启动,每次修改完自动就重启了。 #访问时:127.16.108.225:8989/login #ip:端口/接口名
#从数据库中查数据 @server.route('/get_data') #装饰器 def get_data(): table_list=['app_students','app_myuser','app_myuser_new'] table_name=flask.request.args.get('table_name')#接收用户传过来的参数名 字典格式 limit=flask.request.args.get('limit',10) if table_name : if table_name in table_list: sql=select * from %s limit %s;'%(table_name,limit) data=op_mysql(sql,many_tag=True) else: data={'code':-2,'msg':'没有权限!'} else: data={'code':-1,'msg':'必填参数未填,查看接口文档'} return json.dumps(data,ensure_ascii=False) server.run(host='0.0.0.0',port=8989,debug=True) #这个只要在最下面运行一次即可,如果在上边运行,下边的服务就运行不了了 #程序停掉或关掉pycharm,服务都会停止,除非有外网的服务器。 #在浏览器可请求接口 如:172.16.100.158:8989/login?table_name=sutdents&limit=5 #文件放在服务器上,用python xxx.py运行这个文件即可。前提是有有flask
#post接口请求: server=flask.Flask(__name__) @server.route('/post_data',methods=['post']) #methods默认支持get,methods=['post']post请求,methods=['post','get]支持get,post def post_data(): user_name=flask.request.args.get('username') #参数在url中时,使用args.get get()函数中的名是请求的参数名 user_name2=flask.request.values.get(username2) #参数在body中,使用values.get file=flask.request.files.get('file_name') file.save(file.filename)#保存文件为上传的文件名 print(file.filename) return user_name+user_name2 #必须要有返回值,且返回值是字符串类型 server.run(host='0.0.0.0',port=8989,debug=True)
请求接口时,get在浏览器中请求,请求本机/get_data:127.0.0.1:8989/get_data?table_name=app_myuser
post请求在postman中请求