API密钥

Metabase可以创建API密钥以验证对API的程序性请求。要设置API密钥的权限,可以将密钥分配给

关于Metabase API的公平警告

我们不对 Metabase API 进行版本控制。API 端点很少更改,几乎从不删除,但如果你编写的代码依赖于 API,那么将来你可能需要更新你的代码。

话虽如此,有时与 API 一起工作还是很不错的,比如当管理大量人员和组权限时,或者进行批量存档,或者创建内容。因此,我们添加了创建 API 密钥的功能,以便对程序化请求进行身份验证。

创建 API 密钥

要创建 API 密钥

  1. 点击右上角的 齿轮 图标。
  2. 选择 管理员设置
  3. 转到 设置 选项卡。
  4. 在左侧菜单中点击 身份验证 选项卡。
  5. 滚动到 API 密钥 并点击 管理
  6. 点击 创建 API 密钥 按钮。
  7. 输入一个 密钥名称。你可以有多个 API 密钥,因此给它一个能帮助你记住你使用密钥做什么的名称。
  8. 选择一个 。密钥将拥有该组授予的相同权限。
  9. 点击 创建
  10. 复制生成的 API 密钥并将其保存在安全的地方。Metabase 将无法再次显示密钥。如果你丢失了密钥,你需要重新生成一个新的密钥。

管理 API 密钥

要查看和管理现有的 API 密钥

  1. 点击右上角的 齿轮 图标。
  2. 选择 管理员设置
  3. 转到 设置 选项卡。
  4. 在左侧菜单中点击 身份验证 选项卡。
  5. 滚动到 API 密钥 并点击 管理

编辑 API 密钥

要编辑 API 密钥,滚动到要编辑的密钥并点击 铅笔 图标。Metabase 将弹出一个 编辑 API 密钥 对话框,你可以在这里编辑

  • 密钥的名称
  • 密钥所属的组。
  • 更改(重新生成)密钥。Metabase 将用新的密钥替换现有的 API 密钥。你将无法恢复旧密钥。

删除 API 密钥

你将无法恢复已删除的 API 密钥。你需要创建一个新的密钥。

要删除 API 密钥

  1. 点击右上角的 齿轮 图标。
  2. 选择 管理员设置
  3. 转到 设置 选项卡。
  4. 在左侧菜单中点击 身份验证 选项卡。
  5. 滚动到 API 密钥 并点击 管理
  6. 选择你想要删除的密钥并点击 垃圾箱 图标。
  7. 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 版本 的文档。

想改进这些文档吗? 提出更改。