# 1、mock接口
目的:
mock|muk|接口,就是模拟接口
1、暂时代替第三方接口测试,自己模拟一个接口
2、辅助测试,用来代替没有开发好的接口
3、查看数据
# import flask #python的轻量级的开发框架
# # 接口,后台服务的开发
# # 在浏览器运行http://127.0.0.1:8080/get_user即可,或者其他访问接口的方式
# server = flask.Flask(__name__) #__name__当前文件名,把咱们这个app python当做一个server
# @server.route('/get_user',methods=['get','post']) #将下面函数变成一个接口
# def get_all_user():
# return 'cm的接口' #return只能返回字符串
# #启动服务,加debug自动帮忙重启
# server.run(port = 8080,debug = True)
# 2、调用自己的模块,连接数据库,浏览器请求接口
# import tools #使用时,需要用tools.op_mysql()
from lib.tools import op_mysql #使用时,直接用op_mysql()
# 以上两种方式都可以
3、写接口前先要形成标准的目录结构,分解一下各个目录的文件
4、start.py运行的启动程序,在这里启动 服务
1 #这是程序的入口文件,将启动服务的命令放里面 2 3 #增加根目录为环境变量,方便底层目录执行时目录错误 4 import sys,os 5 BASE_PATH = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) #取到api目录,根目录 6 sys.path.insert(0,BASE_PATH) 7 8 #加环境变量才能导入,否则导入会异常 9 from lib.main import server 10 server.run(port = 8080,host = '0.0.0.0',debug = True) #默认端口号是5000 11 #host = '0.0.0.0' 代表局域网内别人都可以通ip访问自己的接口
5、setting 设置常规变量等
1 MYSQL_HOST = 'X.X.X.X' 2 PASSWORD = '123456' 3 PORT = 3306 4 USER = 'jxz' 5 DB = 'jxz'
6、main.py......自己的主程序
1 # import tools #使用时,需要用tools.op_mysql() 2 from lib.tools import op_mysql #使用时,直接用op_mysql() 3 # 以上两种方式都可以 4 5 import flask,json #python的轻量级的开发框架 6 # 接口,后台服务的开发 7 # 在浏览器运行http://127.0.0.1:8080/get_user即可,或者其他访问接口的方式 8 server = flask.Flask(__name__) #__name__当前文件名,把咱们这个app python当做一个server 9 10 11 #浏览器输出bt_stu表中前5条的数据 12 @server.route('/get_user',methods=['get','post']) #将下面函数变成一个接口 13 def get_all_user(): 14 sql = 'select * from bt_stu limit 5;' 15 res = op_mysql(sql = sql) 16 response = json.dumps(res,ensure_ascii=False) 17 return response #return只能返回字符串 18 19 20 # 浏览器输入用户id、姓名,插入数据到数据库stu表, 21 @server.route('/add_user',methods=['post']) #代码支持什么类型的接口 22 def add_user(): 23 user_id = flask.request.values.get('id') 24 user_name = flask.request.values.get('u') 25 sql = "insert into stu values ('%s','%s');"%(user_id,user_name) 26 if user_id and user_name: 27 res = op_mysql(sql = sql) 28 response = {"code":"308","message":"success"} 29 else: 30 response = {"code":"503","message":"参数不能为空"} 31 return json.dumps(response,ensure_ascii=False) #return只能返回字符串
7、tools工具类文件,相关的函数在这里面
1 import pymysql 2 from conf import setting 3 4 # 1、操作mysql 5 def op_mysql(sql): 6 conn = pymysql.connect(host=setting.MYSQL_HOST,user= setting.USER, 7 password=setting.PASSWORD, 8 port=setting.PORT, 9 charset = 'utf8', 10 db = setting.DB) 11 cur = conn.cursor(cursor=pymysql.cursors.DictCursor) 12 #判断是否需要commit,根据select update delete insert的类型 13 cur.execute(sql) 14 sql_start = sql[:6].upper()# select不区分大小写,取前6位转换成大写 15 if sql_start == 'SELECT': 16 res = cur.fetchall() 17 else: 18 conn.commit() 19 res = 'ok' 20 cur.close() 21 conn.close() 22 return res