Quantcast
Channel: Postmanタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 470

Metabase の API を実行する

$
0
0

オープンソースのBIツール Metabase使ってますか?
OSS なのでもちろん無料!
無料なのに超イケてるデータ可視化がサクッとできちゃう!
そんな Metabase を API 経由で操作できるようになったら更に活用の幅が広がりそうだと思いませんか?

Metabase そのものについては
OSSのデータ可視化ツール「Metabase」が超使いやすい - Qiita
のような良いまとめがたくさんあるのでここでは割愛し、 API の実行手順についてだけまとめました。

手順要約

Google 連携のアカウントについては後述

  1. ログイン可能なアカウントを用意する
  2. metabase-session-idを発行する
  3. API を実行する

第1引数にHTTPメソッド、第2引数にAPIのパスを与えて実行できるシェルスクリプト書きました。
https://gist.github.com/macoril/ef864d5a6a1bef237cc3f7e559568740
. ./metabase_api_exe.sh GET /api/pulse
って感じに実行する。有効なセッションがないときはセッション取得し直すとかもする。

(シェル久しぶりすぎて細かいところ忘れてて変なコードになってると思うので指摘欲しいです。
特に、L.61のcurlの実行はL.23のcurlと同じ書き方にしたかったけど、jsonが半角スペースで分けられて不要なクォーテーション付きで展開されてしまってうまく対処できなかったorz
ので解決方法を知りたい)

詳細

1. ログイン可能なアカウントを用意する

Google 連携のアカウントはちょっと面倒なのでメールアドレスとパスワードによる認証のアカウントを用意する。
この記事においては

とする。

Google 連携のアカウントについては後述

2. metabase-session-idを発行する

以下のように curlを実行すると metabase-session-idが発行される。

メールアドレスは usernameの値として渡すので注意。
(以前は usernameではなく emailだったらしい1

curl -X POST \-H"Content-Type: application/json"\-d'{"username": "user@example.com", "password": "metapass"}'\
  http://localhost:3000/api/session 

# -> {"id":"38f4939c-ad7f-4cbe-ae54-30946daf8593"}

Postman を使う場合の Tips

Postman を使う場合は Tests に以下のコードを設定しておくと、以下の条件を満たす場合に global 変数 metabase-session-idに返ってきた値を設定しておくことができてべんり。

  • ステータスコードが 200
  • レスポンスの JSON に idというキーがある
pm.test("Set Session",function(){pm.response.to.be.okpm.response.to.have.jsonBody("id")letjson=JSON.parse(responseBody)pm.globals.set('metabase-session-id',json.id)})

テストとして実行する必要がない場合は以下でも可

if(pm.response.to.be.ok&&pm.response.to.have.jsonBody("id")){letjson=JSON.parse(responseBody)pm.globals.set('metabase-session-id',json.id)}

※Postman では以前は以下のように判定をしていてこういう書き方のナレッジが結構出てきますが、現在は deprecated なので注意。

// ステータスコードが200ならXXXif(responseCode.code==200){XXX}// レスポンスの JSON に id というキーがあればXXXvardata=JSON.parse(responseBody);if(_.has(data,"id")){XXX}// グローバル変数を設定するpostman.setGlobalVariable("key","value");

3. API を実行する

取得できた metabase-session-idX-Metabase-Sessionの値として設定する。

curl -X GET \-H"Content-Type: application/json"\-H"X-Metabase-Session: 38f4939c-ad7f-4cbe-ae54-30946daf8593"\
  http://localhost:3000/api/pulse

# -> [{"archived":false,"collection_position":null,"creator":{"email":"user@example.com","first_name":"user",

Google 連携のアカウントの場合の手順

Google 連携のアカウントを使いたい場合は、 metabase-session-idを発行するため Google のアクセストークンが必要となる。

2.1 Google の OAuth アクセストークンを取得する。
2.2 POST /api/session/ではなく POST /api/session/google_authを使って metabase-session-idを発行する。

参考

Metabase 関連

  • README
    • Metabase Documentation のトップ。
  • Api Documentation
    • README を APIで検索して見つかったページ。しかし API 一覧ページでしか無くて、実行方法についての解説はない
  • Using the REST API · metabase/metabase Wiki
    • この文書を見つけるまでが大変で、見つけてしまえさえすればあっという間だった。ここに API の実行方法が載っている

Google 連携関連

Postman 関連

postmanのナレッジはそのうち切り出したいな


Viewing all articles
Browse latest Browse all 470

Trending Articles