使用flask模块mock接口数据

…衆ロ難τιáo~ 提交于 2020-02-12 20:52:11

mock接口流程:

  1. 理清业务逻辑
  2. 开始动工

支付接口

from flask import Flask, jsonify, request

# flask: web框架
# jsonify: 是用来序列化返回的json格式的数据
# request: 是用来获取调用接口的时候传入的数据,这几个模块都是falsk里面的

# 定义常见错误码
# 方法错误
method_err = {
    "code": 301,
    "msg": "请求方式不正确,只支持post请求"
}
# 参数错误
param_err = {
    "code": 302,
    "msg": "请求参数错误,请检查入参"
}

# 用户不存在
user_err = {
    "code": 305,
    "msg": "该用户不存在"
}

# 成功的信息
success_msg = {
    "code": 200,
    "msg": "支付成功"
}

# 数据库异常
db_err = {
    "code": 306,
    "msg": "数据库错误"
}

server = Flask(__name__)
# 这个是初始化一个服务,__name__代表是咱们写的这个python文件,

server.config['JSON_AS_ASCII'] = False


# route方法是一个装饰器,必须写在业务逻辑的函数上面
# route方法第一个参数就是访问的路径,
# methods是支持哪种类型的请求get或者post请求
@server.route('/pay', methods=['POST', 'GET'])
def pay():
    # 定义接口接口的业务逻辑了
    if request.method != 'POST':  # 如果不是post请求的话,返回请求类型错误
        return jsonify(method_err)
        # return 就返回数据了,jsonify就是把python里面的数据类型(字典、list)转成json串
    else:
        user_id = request.values.get('user_id')
        # 使用request.values.get获取到传入的参数,user_id
        price = request.values.get('price')
        # 获取到参数
        if user_id and price:
            # 判断两个入参是否都传了,user_id和price
            if price.isdigit():  # 如果价格是整数的话
                price = int(price)
            else:  # 如果不是整数,返回价格错误
                return jsonify(param_err)
            # 实际的业务逻辑
            success_msg['user_id'] = user_id
            success_msg['price'] = price
            res = success_msg
            return jsonify(res)  # 返回结果
        else:  # 如果name或者价格获取不到的话,返回参数错误
            return jsonify(param_err)


if __name__ == '__main__':
    # 运行程序,debug的意思是调试模式运行,可以看到请求,默认端口号是5000,可以使用port参数指定端口号
    server.run(debug=True)

测试API

import flask
import json
from flask import request

'''
flask: web框架,通过flask提供的装饰器@server.route()将普通函数转换为服
'''

# 创建一个服务,把当前这个python文件当做一个服务
server = flask.Flask(__name__)
# @server.route()可以将普通函数转变为服务 登录接口的路径、请求方式


@server.route('/login', methods=['get', 'post'])
def login():
    # 获取通过url请求传参的数据
    username = request.values.get('name')
    # 获取url请求传的密码,明文
    pwd = request.values.get('pwd')
    # 判断用户名、密码都不为空
    if username and pwd:
        if username == 'xiaoming' and pwd == '111':
            resu = {'code': 200, 'message': '登录成功'}
            return json.dumps(resu, ensure_ascii=False)  # 将字典转换字符串
        else:
            resu = {'code': -1, 'message': '账号密码错误'}
            return json.dumps(resu, ensure_ascii=False)
    else:
        resu = {'code': 10001, 'message': '参数不能为空!'}
        return json.dumps(resu, ensure_ascii=False)


if __name__ == '__main__':
    server.run(debug=True, port=8888, host='127.0.0.1')

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!