mock接口流程:
- 理清业务逻辑
- 开始动工
支付接口
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')
来源:CSDN
作者:Sugar2019
链接:https://blog.csdn.net/weixin_42176112/article/details/104283079