背景:
API 数据源需要对接登录接口,获取 token 值,然后周期性动态更新该 token 值,来接入 API 数据源。
例如:公司需要登录 /login 接口,获取校验码 token ,接口过期时间为 10s ,需要根据 token 获取 API 中的数据。
实践过程:
环境准备:API 数据源的参数功能需 DataEase v2.9.0 以上,实验环境为 v2.10.1
实践需求:根据数据登录接口 /login ,然后根据 token 动态获取 API 数据。
首先搭建测试 API (已有自己的登录和数据接口可以跳过这步,换成自己的)
测试环境(可选):python 3.12
pip install Flask Flask-JWT-Extended
from flask import Flask, request, jsonify
from flask_jwt_extended import JWTManager, create_access_token, jwt_required, get_jwt_identity
app = Flask(__name__)
# 配置JWT
app.config['JWT_SECRET_KEY'] = 'DataEase@123456' # 密钥
jwt = JWTManager(app)
# 模拟用户数据库
users = {
"admin": "DataEase@123456",
"user1": "DataEase@123456"
}
@app.route('/login', methods=['POST'])
def login():
username = request.json.get('username')
password = request.json.get('password')
# 验证用户名和密码
if username in users and users[username] == password:
# 创建访问 token
access_token = create_access_token(identity=username)
# {
# "access_token": "your_generated_access_token"
# }
return jsonify(access_token="Bearer "+access_token), 200
else:
return jsonify({"msg": "Bad username or password"}), 401
@app.route('/data', methods=['GET'])
@jwt_required()
def get_data():
current_user = get_jwt_identity()
# 根据当前用户返回一些数据
data = {
"message": f"This is private data for {current_user}",
"data": {
"商品":"坚果炒货",
"单价":1
}
}
# Authorization: Bearer access_token
return jsonify(data), 200
if __name__ == '__main__':
app.run(debug=True,port=8101,host='0.0.0.0')
1.创建 API 数据源
2.填好数据,点接口参数,点击添加
3.填写参数
4.填写信息
5.点击校验,显示成功
6.解析参数,点击保存:
7.保存后显示解析成功:
8.此时点击数据表,点击 “添加” ,在请求头中,增加 Authorization 字段,选择参数(或者自定义,用${params} 来绑定)
此时点击下一步即可预览数据。提示:如果需要,可以上一步配置下查询超时和动态时间。
9.点击下一步
10.配置数据更新:
此时可以动态更新校验码持续获取数据,创建数据集,生成自己的图表了。