背景: {#%E8%83%8C%E6%99%AF%EF%BC%9A}
API 数据源需要对接登录接口,获取 token 值,然后周期性动态更新该 token 值,来接入 API 数据源。
例如:公司需要登录 /login 接口,获取校验码 token ,接口过期时间为 10s ,需要根据 token 获取 API 中的数据。
实践过程: {#%E5%AE%9E%E8%B7%B5%E8%BF%87%E7%A8%8B%EF%BC%9A}
环境准备: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.配置数据更新:
此时可以动态更新校验码持续获取数据,创建数据集,生成自己的图表了。