day7_mock接口开发
Posted laosun0204
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了day7_mock接口开发相关的知识,希望对你有一定的参考价值。
mock接口顾名思义就是模拟接口的意思,模拟第三方数据交互的接口,当第三方的接口没有提供之前,我们自己写mock接口和自己的系统数据对接测试,如果不想让别人连接数据库,可以mock接口,让别人调这个接口看数据
import flask
import json
server = flask.Flask(__name__)
@server.route(\'/api/login\') # 函数名可以写别的名字也可以,访问要按照路径来
def login():
d = {\'error_code\': 0, \'msg\': \'登录成功\'}
return json.dumps(d, ensure_ascii=False)
server.run(host=\'0.0.0.0\', port=8000, debug=True) # run只能写一次,如果run上面还有接口,把run写在所有接口的下面,debug = True修改代码后会自动刷新
tools.py里的代码如下:
import pymysql
import hashlib
def con_mysql(sql, many=True):
conn = pymysql.connect(host=\'118.24.3.40\', user=\'jxz\', password=\'123456\', db=\'jxz\', charset=\'utf8\')
cur = conn.cursor(pymysql.cursors.DictCursor)
cur.execute(sql)
if many:
res = cur.fetchall()
else:
res = cur.fetchone()
cur.close()
conn.close()
return res
def md5_passwd(s, salt=\'\'):
s = str(s) + salt
md = hashlib.md5(s.encode())
# md.update(s.encode())
res = md.hexdigest()
return res
接口开发.py里的代码如下:
import flask
import json
from tools import con_mysql
server = flask.Flask(__name__) # 把这个python文件当作一个web服务,server可以改成别的名字
@server.route(\'/api/login\', methods=[\'post\', \'get\']) # route里面第一个参数是路径名,第二个参数是请求类型,必须用list这种方式,methods默认不写就是get请求
def login(): # @server.route和函数名必须紧挨着,就把下面的函数封装成一个接口,要不然就是普通函数
# print(flask.request.values) # 打印出CombinedMultiDict([ImmutableMultiDict([(\'username\', \'ssj\'), (\'password\', \'123\')]))
print(flask.request.json) # 刷新url或调用postman打印出{\'username\': \'sj\', \'password\': \'123\'}
username = flask.request.values.get(\'username\') # 字典格式用get取值
password = flask.request.values.get(\'password\') # 字典格式用get取值
# flask.request.json.get(\'username\') # 字典格式用get取值
# flask.request.json.get(\'password\') # 字典格式用get取值
# if flask.request.is_json: # 判断是否是json的入参
d = {\'error_code\': 0, \'msg\': \'登录成功\', \'username\': username, \'password\': password}
return json.dumps(d, ensure_ascii=False)
@server.route(\'/api/get_bill\')
def get_bill():
table_list = [\'app_myuser\', \'ssj\']
table_name = flask.request.values.get(\'table_name\')
limit = flask.request.values.get(\'limit\', 50)
if table_name and table_name in table_list:
sql = \'select * from %s limit %s;\' % (table_name, limit)
result = con_mysql(sql)
data = {\'error_code\': 0, \'msg\': \'操作成功\', \'data\': result}
else:
data = {\'error_code\': -1, \'msg\': \'没有权限访问该表\'}
return json.dumps(data, ensure_ascii=False)
server.run(host=\'0.0.0.0\', port=8000, debug=True)
=======================================================================
import json
@server.route(\'/reg\',methods = [\'get\',\'post\'])
def reg(): # @server.route必须和def reg()紧紧挨着,就把下面的函数封装成一个接口,要不然是普通函数
# print(request.values)打印出一个字典,获取到在浏览器里传入的参数,这种格式是CombinedMultiDict([ImmutableMultiDict([(\'username\', \'ssj\'), (\'password\', \'123\')]), ImmutableMultiDict([])])
# username = request.values.get(\'username\') # 调用接口传入的参数
# password = request.values.get(\'password\') # 调用接口传入的参数
username = request.json.get("username") # 在postman里面入参是json类型的要用这种方式,用上面的会报错
password = request.json.get("password") # 在postman里面入参是json类型的要用这种方式,用上面的会报错
if username and password:
sql = \'select username,password from user where username="%s";\' % username
res = conn_mysql(sql) # 执行sql
if res:
return \'{"code":300,"msg":"你注册的用户已经存在"}\'
else:
password = md5_passwd(password)
sql = \'insert into user(username, password) values ("%s","%s");\' % (username, password)
conn_mysql(sql)
return \'{"code":200, "msg":"注册成功!"}\'
else:
return \'{"code":938, "msg":"请查看接口文档"}\'
# return \'hello,world!\'
server.run(port = 8000, debug = True, host = \'0.0.0.0\') # host=0.0.0.0(windows下写0.0.0.0,mac下写0就ok)代表监听所有的IP,别人要想访问你的接口,在同一个局域网内在他的代码里写上你真实的IP就可以访问,debug=True是自动重启的意思,修改代码后服务会重启,要在浏览器里或postman里调一下,下图中绿色是自动重启按钮
以上是关于day7_mock接口开发的主要内容,如果未能解决你的问题,请参考以下文章