クイックスタート
このページでは、最小の手順で ExpTech API を呼び出します。まず認証の不要な HTTP API を呼び出し、次に API Token を作成し、最後にリアルタイム配信を開きます。利用前に利用ルールと利用規約をお読みください。
-
最初の API を呼ぶ
地震情報は、現在 token が不要です。次の例は、中央気象署(CWA)の地震情報を直近 5 件取得します。
ターミナルウィンドウ curl -sL "https://api.core.exptech.dev/api/v2/eq/report?limit=5"const res = await fetch("https://api.core.exptech.dev/api/v2/eq/report?limit=5");if (!res.ok) throw new Error(`HTTP ${res.status}`);const reports = await res.json();console.log(reports[0].loc, reports[0].mag);レスポンスは JSON 配列で、各要素が 1 件の地震情報です。フィールドの説明は地震情報を参照してください。
他の host とノードはサーバーと Base URLを参照してください。本番運用の前に、そのページの手順でクライアント側に予備の host を用意することを推奨します。
-
API Token を作成する
認証が必要な API と、利用量を記録する配信では API Token を使います。
- https://manager.exptech.com.tw/login にログインします(メールアドレスを入力し、届いたメールのログインリンクを開きます)。
- ダッシュボードの API Token ページで、権限を選んで作成します。
- Token は一度しか表示されません。 すぐに保存してください。形式は
et_で始まる文字列です。
-
リアルタイム配信を開く
リアルタイムデータは SSE(Server-Sent Events)で送ります。次の例は地震情報の配信
eq.report.v1に接続します。新しい地震情報があると、サーバーがメッセージを送ります。ターミナルウィンドウ curl -N -H "Authorization: Bearer et_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \"https://api.lb.exptech.dev/api/v1/trem/sse/report"ブラウザの
EventSourceは header を付けられないため、token は query に置きます。各データは gzip 圧縮したあと base64 で符号化されているので、先に復号します。const token = "et_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";const es = new EventSource(`https://api.lb.exptech.dev/api/v1/trem/sse/report?token=${encodeURIComponent(token)}`,);async function decode(base64) {const bytes = Uint8Array.from(atob(base64), (c) => c.charCodeAt(0));const stream = new Blob([bytes]).stream().pipeThrough(new DecompressionStream("gzip"));return JSON.parse(await new Response(stream).text());}es.onmessage = async (event) => {console.log(await decode(event.data));};eq.report.v1は公開 topic なので、token なしでも接続できます。token を付けると、利用量はあなたのアカウントに計上され、ダッシュボードの利用量で確認できます。権限が必要な topic では、token に対応する権限があり、かつアカウントがダッシュボードのサブスクリプションでそのリソースを購読している必要があります。そうでない場合は拒否されます。サブスクリプションとクォータの計算は利用量とクォータを参照してください。接続開始時の
event: info、60 秒ごとのハートビート、複数の topic を 1 本の接続で共有する書き方と再接続の方法は、リアルタイム配信を参照してください。 -
次のステップ
