今日解锁:利用flask框架mock开发
利用python开发mock有很多办法,这里主要用flask和fastapi两个模块
今天我们先讲 flask 如何实现 mock 开发。
flask是一个Python编写的Web 微框架,让我们可以使用Python语言快速实现一个网站或Web服务。
没有安装flask的,先安装flask模块,pip3 install flask就可以。
接下来利用flask来实现注册接口,下面开始贴贴代码:
import flask
import json
reg_server=flask.Flask(__name__)
tools=flask.Flask(__name__)
@reg_server.route('/regone',methods=['post','get'])
def reg():
username = flask.request.values.get('username')
password = flask.request.values.get('password')
cpassword = flask.request.values.get('cpassword')
if username.strip() and password.strip() and cpassword.strip():
if password.strip() != cpassword.strip():
return json.dumps({'code': -1, 'msg': '两次输入的密码不一样'})
else:
sql='select * from test_user where username="%s";'%username
if tools.execute_sql(sql):
return json.dumps({'code':-1,'msg':'用户已经存在'},ensure_ascii=False)
else:
p = tools.my_md5(password) # 把用户密码用MD5加密
insert_sql = 'insert into test_user (username,password,md5psd) value ("%s","%s","%s");'%(username,password,p)
tools.execute_sql(insert_sql)
return json.dumps({'code':0,'msg':'注册成功!'},ensure_ascii=False)
else:
return json.dumps({'code':-1,'msg':'必填参数不能为空'},ensure_ascii=False)
reg_server.run(port=8999,debug=True)
调试过程中遇到下面这几个问题:
2.接口里面的 tools.execute_sql(sql) 需要自己添加到flask框架里面的方法,即在app.py里面,这样才能连接数据库,执行sql语句的操作。同理,tools..my_md5(password) 也一样,需要自己在flask里面定义方法,才能对密码进行md5加密。
在 app.py里面添加:
def execute_sql(self,sql):
pass(逻辑自己写,连接数据库,执行sql语句,会的吧)
def my_md5(my_md5((self,password):
pass(逻辑自己写,md5加密,会的吧)
3.最后让我最抓狂的一点,有些判断条件返回json的时候,忘记写了ensure_ascii=False
return json.dumps({'code':0,'msg':'注册成功!'},ensure_ascii=False)
不写的话就会导致,在调用服务的时候,返回的值是非中文的,如下:
所以千万不要忘记,一开始以为是没有进行编译,后面经过大佬指点才知道python3的框架都是自带编译的,不像python2。
最后,利用postman 进行调试接口:
成功了,洗洗睡。