API密钥
Metabase可以创建API密钥以验证对API的程序性请求。要设置API密钥的权限,可以将密钥分配给组。
关于Metabase API的公平警告
我们不对 Metabase API 进行版本控制。API 端点很少更改,几乎从不删除,但如果你编写的代码依赖于 API,那么将来你可能需要更新你的代码。
话虽如此,有时与 API 一起工作还是很不错的,比如当管理大量人员和组权限时,或者进行批量存档,或者创建内容。因此,我们添加了创建 API 密钥的功能,以便对程序化请求进行身份验证。
创建 API 密钥
要创建 API 密钥
- 点击右上角的 齿轮 图标。
- 选择 管理员设置。
- 转到 设置 选项卡。
- 在左侧菜单中点击 身份验证 选项卡。
- 滚动到 API 密钥 并点击 管理。
- 点击 创建 API 密钥 按钮。
- 输入一个 密钥名称。你可以有多个 API 密钥,因此给它一个能帮助你记住你使用密钥做什么的名称。
- 选择一个 组。密钥将拥有该组授予的相同权限。
- 点击 创建。
- 复制生成的 API 密钥并将其保存在安全的地方。Metabase 将无法再次显示密钥。如果你丢失了密钥,你需要重新生成一个新的密钥。
管理 API 密钥
要查看和管理现有的 API 密钥
- 点击右上角的 齿轮 图标。
- 选择 管理员设置。
- 转到 设置 选项卡。
- 在左侧菜单中点击 身份验证 选项卡。
- 滚动到 API 密钥 并点击 管理。
编辑 API 密钥
要编辑 API 密钥,滚动到要编辑的密钥并点击 铅笔 图标。Metabase 将弹出一个 编辑 API 密钥 对话框,你可以在这里编辑
- 密钥的名称
- 密钥所属的组。
- 更改(重新生成)密钥。Metabase 将用新的密钥替换现有的 API 密钥。你将无法恢复旧密钥。
删除 API 密钥
你将无法恢复已删除的 API 密钥。你需要创建一个新的密钥。
要删除 API 密钥
- 点击右上角的 齿轮 图标。
- 选择 管理员设置。
- 转到 设置 选项卡。
- 在左侧菜单中点击 身份验证 选项卡。
- 滚动到 API 密钥 并点击 管理。
- 选择你想要删除的密钥并点击 垃圾箱 图标。
- Metabase 将弹出一个 删除 API 密钥 对话框。点击 删除 API 密钥 按钮。
Metabase 将将关联被删除组的 API 密钥转移到所有用户组
如果你将 API 密钥分配给了某个组,但随后有人删除了该组,这些密钥仍然有效,但 Metabase 将将这些密钥重新分配到所有用户组。如果你想要更改它们的组,你需要手动编辑密钥。
示例 GET
请求
以下是一些示例 GET
请求,这些请求返回 Metabase 中的组。这些示例假设你在默认端口(3000)上本地运行 Metabase。
curl
示例
将 YOUR_API_KEY
替换为你上面生成的 API 密钥。
curl \
-H 'x-api-key: YOUR_API_KEY' \
-X GET 'https://127.0.0.1:3000/api/permissions/group'
JavaScript 示例
假设你已经将密钥设置为环境变量,如下所示
export METABASE_API_KEY="YOUR_API_KEY"
这是一个基本的 GET
请求,使用 fetch
获取组列表。你可以复制代码,将其保存为文件(例如,保存为 api-test.js
),然后使用 node api-test.js
运行代码。
// Assuming you've set the key in process with
// `export METABASE_API_KEY="YOUR_KEY_HERE"`
const API_KEY = process.env.METABASE_API_KEY;
const init = {
headers: {
"Content-Type": "application/json",
"X-API-KEY": API_KEY,
},
};
const host = "http://127.0.0.1:3000";
async function getGroups() {
const response = await fetch(`${host}/api/permissions/group`, init);
return response.json();
}
getGroups().then(groups => console.log("Groups in your Metabase:", groups));
进一步阅读
阅读其他 Metabase 版本 的文档。