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 密钥,但之后有人删除了该群组,则 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"

这是一个使用 fetch 获取群组列表的基本 GET 请求。您可以复制代码,将其另存为文件(例如,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 的文档。