Watch-IP

JavaScriptとTypeScriptでWatch-IPを使う

@digitload/watch-ip-sdk(npm、v0.1.1)は、すべてのレスポンスフィールドに対するTypeScriptの型を備え、実行時の依存関係を持たない小さなクライアントでGET /v1/geoをラップします。

インストール

Node.js 18以降、または任意の最新のブラウザが必要です—どちらもこのパッケージが基盤とするグローバルなfetchを提供します。

npm

npm install @digitload/watch-ip-sdk

クイックスタート

公開可能キーでクライアントを構築し、getGeo()を呼び出します。返されるGeoResponseは完全に型付けされています。ipとisEUCountryを除くすべてのフィールドはnullになりうるため、描画する前に確認してください。

TypeScript

import { WatchIP } from "@digitload/watch-ip-sdk";

const client = new WatchIP("wip_pub_xxxxxxxx");
const geo = await client.getGeo();

console.log(geo.country, geo.city, geo.timezone);

エラー処理とタイムアウト

拒否されたリクエスト(無効なキー、許可されていないオリジン、レート制限)やネットワークエラーなど、すべての失敗はstatusと安定したcodeを持つWatchIPErrorをスローします。組み込みのタイムアウトはないため、遅いリクエストを自分でキャンセルするにはAbortControllerのsignalを渡してください。

TypeScript

import { WatchIP, WatchIPError } from "@digitload/watch-ip-sdk";

const client = new WatchIP("wip_pub_xxxxxxxx");
const controller = new AbortController();
setTimeout(() => controller.abort(), 5000);

try {
  const geo = await client.getGeo({ signal: controller.signal });
} catch (err) {
  if (err instanceof WatchIPError) {
    console.error(err.code, err.status, err.message);
  }
}

オプションのフィールド

include: ["hostname"]を渡すと、接続元IPに対する逆引きDNSルックアップが追加されます。追加のネットワークホップが発生するためオプトイン方式になっており、そのフィールドを使う場合にのみリクエストしてください。

TypeScript

const geo = await client.getGeo({ include: ["hostname"] });

このSDKがカバーしていないもの

このパッケージが呼び出すのはGET /v1/geoのみです。IPルックアップ、メール検証、リスクチェック用のメソッドはありません—これらはシークレットキーで認証するサーバー間エンドポイントであり、このSDKが前提とする公開可能キーとは異なります。直接HTTPで呼び出してください。IPルックアップのリファレンスと認証ガイドをご覧ください。

関連ページ