flask接口引用
flask应用.py
from flask import Flask, request, jsonify
# 操作步骤:
# 1. 给当前服务取个名字, __name__ 内置属性
app = Flask(__name__)
# 数据--用户表
all_urer = {"hami": "123456", "admin": "456789", "hami2": "123456"}
# MSG_模板:--响应数据应该是什么样子的格式--开发会提前定义
# {
# "code": 202,
# "msg":"对应的提示信息",
# "data":[多个字典]
# }
# 登录成功
MSG_LOGIN_SUCCESS = {
"msg": "登录成功",
"code": "0",
"data": {
"id": "75",
"username": "hami",
"nickname": "哈米老师",
"mobile": "",
"email": "",
"avatar": "http://shop-xo.hctestedu.com/static/upload/images/user_avatar/compr/2023/07/01/202307011819170015381852.jpg",
"alipay_openid": "",
"weixin_openid": "",
"weixin_unionid": "",
"weixin_web_openid": "",
"baidu_openid": "",
"toutiao_openid": "",
"qq_openid": "",
"qq_unionid": "",
"integral": "420",
"locking_integral": "0",
"referrer": "0",
"add_time": "1624022081",
"add_time_text": "2021-06-18 21:14:41",
"mobile_security": "",
"email_security": "",
"user_name_view": "hami",
"is_mandatory_bind_mobile": 0,
"token": "bd80726708856645618cfb2a5a6926d2"
}
}
# 数据错误
MSG_DATA_NULL = {
"msg": "用户名和密码不能为空",
"code": -1,
"data": ""
}
# 数据异常
MSG_DATA_ERROR = {
"msg": "登录数据有误",
"code": -1,
"data": ""
}
# 用户名错误
MSG_ERROR_USERNAME = {
"msg": "登录帐号不存在",
"code": -3,
"data": ""
}
# 密码错误
MSG_ERROR_PASSWORD = {
"msg": "密码错误",
"code": -4,
"data": ""
}
# 登录失效
MSG_LOGIN_ERROR = {
"msg": "登录失效,请检查当前登录用户。",
"code": -5,
"data": ""
}
# 2. 一个接口就是一个方法
@app.route("/")
@app.route("/index.php")
def index():
return "欢迎来到主页~"
# 接口:url 、请求方法、请求参数、响应数据
@app.route("/api/login", methods=["POST"])
def login():
# 做限制
# 1. 以json格式进行拿取【推荐】
data = request.get_json()
# 期望应该包含哪些字段 -- 集合
res_json = {"username", "password"}
# data.keys() -- 获取所有的key值,再给它转成集合格式
# 两个集合进行对应的对比:
if set(data.keys()) == res_json:
# 获取用户名和密码
urername = data["username"]
password = data["password"]
else:
return jsonify(MSG_DATA_ERROR)
"""
分支判断:mock选择常用的接口场景去覆盖
1. 参数不能为空
2. 登录成功
3. 密码不正确
4. 用户名不正确
5. 参数不正确的情况
"""
# 2. 判断数据的正确性
# 21: 20 开始上课
if urername in all_urer:
if urername == "" or password == "":
return jsonify(MSG_DATA_NULL)
elif all_urer[urername] == password:
# all_urer = {"hami": "123456", "admin": "456789"}
return jsonify(MSG_LOGIN_SUCCESS)
elif all_urer[urername] != password:
return jsonify(MSG_ERROR_PASSWORD)
else:
return jsonify(MSG_ERROR_USERNAME)
else:
return jsonify(MSG_ERROR_USERNAME)
@app.route("/api/info", methods=["GET"])
def getinfo(): # 某个人--token
try:
token = request.headers.get("Authorization")
if token == MSG_LOGIN_SUCCESS["data"]["token"]:
return jsonify(MSG_LOGIN_SUCCESS)
else:
return jsonify(MSG_LOGIN_ERROR)
except Exception:
return jsonify(MSG_LOGIN_ERROR)
# 3. 启动服务
if __name__ == '__main__':
app.run(debug=True)
flask.py
import requests
# 登录接口
data = {"username": "hami", "password": "123456"}
res = requests.post(url="http://127.0.0.1:5000/api/login", json=data)
# print(res.text)
print(res.json())
# 400 :响应数据是开发写,所以不对,有可能你接口请求数据不对,也有可能是开发本身就不小心写错
print(res.status_code)
# 200 :只能说明服务器是能够正确响应,但是不代表对应响应数据正确
# 查看用户信息
headers = {"Authorization": "bd80726708856645618cfb2a5a6926d2"}
# headers = {"token": "5345435435435435435"}
res = requests.get(url="http://127.0.0.1:5000/api/info", headers=headers)
# res = requests.get(url="http://127.0.0.1:5000/api/info")
print(res.json())
# 400 :响应数据是开发写,所以不对,有可能你接口请求数据不对,也有可能是开发本身就不小心写错
print(res.status_code)
# 200 :只能说明服务器是能够正确响应,但是不代表对应响应数据正确