加油吧,骚年

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 :只能说明服务器是能够正确响应,但是不代表对应响应数据正确

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值