本文介绍如何使用Metabase的API。我们自己使用该API连接前端和后端,因此您可以编写Metabase几乎可以执行的所有操作。
开始之前有两个注意事项:
为了简单起见,我们将使用古老的命令行实用程序curl对于我们的API调用示例;您还可以考虑使用一个专用工具来开发API请求(比如Postman). 要跟上,你可以启动一个新的Metabase本地实例到处玩。
你需要一个session token以验证您的请求,否则Metabase将拒绝与您交谈。若要获取session token,请向/api/session具有用户名和密码的终结点:
curl -X POST \
-H "Content-Type: application/json" \
-d '{"username": "person@metabase.com", "password": "fakepassword"}' \
http://localhost:3000/api/session
如果使用的是远程服务器,则需要替换localhost:3000你的服务器地址。此请求将返回一个JSON对象,该对象的键名为id
以及令牌作为密钥的值,例如:
{“id”
:“38f4939c-ad7f-4cbe-ae54-30946daf8593”}
您将需要在后续请求的标头中包括该session token,如下所示:
"X-Metabase-Session: 38f4939c-ad7f-4cbe-ae54-30946daf8593"
关于会话的一些注意事项:
下面是一个示例API请求(注意session token),它将/api/user/current端点,它返回有关当前用户的信息:
curl -X GET \
-H "Content-Type: application/json" \
-H "X-Metabase-Session: 38f4939c-ad7f-4cbe-ae54-30946daf8593" \
http://localhost:3000/api/user/current
上面的请求返回一个JSON对象(格式化为可读性):
{
"email": "person@metabase.com",
"ldap_auth": false,
"first_name": "Human",
"locale": null,
"last_login": "2020-08-31T13:08:50.203",
"is_active": true,
"is_qbnewb": false,
"updated_at": "2020-08-31T13:08:50.203",
"group_ids": [
1,
2
],
"is_superuser": true,
"login_attributes": null,
"id": 1,
"last_name": "Person",
"date_joined": "2020-08-19T10:50:46.547",
"personal_collection_id": 1,
"common_name": "Human Person",
"google_auth": false
}
您还可以使用一个文件来存储POST请求的JSON负载。这使得您可以很容易地对API发出一组预定义的请求。
curl -H @header_file.txt -d @payload.json http://localhost/api/card
下面是一个JSON文件的示例@payload.json在上面的命令中)创建一个问题:
{
"visualization_settings": {
"table.pivot_column": "QUANTITY",
"table.cell_column": "SUBTOTAL"
},
"description value": "A card generated by the API",
"collection_position": null,
"result_metadata": null,
"metadata_checksum": null,
"collection_id": null,
"name": "API-generated question",
"dataset_query": {
"database": 1,
"query": {
"source-table": 2
},
"type": "query"
},
"display": "table"
}
该请求生成了如图1所示的问题。
如果自动生成的API文档不清楚,可以使用Firefox、Chrome和Edge等浏览器附带的开发工具来查看Metabase的请求和响应(图2)。
在Metabase应用程序中,执行要编写脚本的操作,例如添加用户或创建仪表板。然后使用浏览器中的开发人员工具查看执行该操作时向服务器发出的请求Metabase。
除了使用环境变量,您可以使用MetabaseAPI来设置Metabase的实例。一旦您使用首选方法,并且Metabase服务器已启动并正在运行,您可以通过发布到特定端点来创建第一个用户(作为管理员),/api/setup.这个/api/setup终结点:
然后可以使用/api/setup端点,使用