vlambda博客
学习文章列表

今日解锁:利用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)


调试过程中遇到下面这几个问题:


1. flask里面的固定写法:@xxx.route("相对URL",methon=["post","get"]),
xxx为设计的接口的名称,可以随便取,但是要前面的flask调用的时候,变量名称要一样(reg_server=flask.Flask(__name__),后面的tools也一样定义),
这里用的是reg_server,(网上很多都是用的@app_route()),这里其实就是一个装饰器,修饰下面的注册服务接口。


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 进行调试接口:


成功了,洗洗睡。