• day7_用flask进行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里调一下,下图中绿色是自动重启按钮
  • 相关阅读:
    WP8日历(含农历)APP
    NHibernate3剖析:Mapping篇之集合映射基础(2):Bag映射
    初探springmvc
    树的子结构
    Java内存分析
    java8_api_misc
    iOS开发多线程篇 09 —NSOperation简单介绍
    CALayer1-简介
    NSCharacterSet
    iOS 音频开发
  • 原文地址:https://www.cnblogs.com/laosun0204/p/8548501.html
Copyright © 2020-2023  润新知