@dodopayments/ingestion-blueprints npm package に trackAPICall() として含まれており、call ごとに 1 つの event を送信します。また、リクエスト数が多い場合に event をキューに追加する createBatch() も含まれています。
ユースケース
API Gateway Blueprint は、次のシナリオに適しています:API-as-a-Service
API platform 上で customer ごとの call 数を追跡し、call 数に応じて請求します。
Rate Limiting
usage-based rate limit の判断に使用するため、customer ごとの call volume を記録します。blueprint は usage を記録しますが、limit の適用は行いません。
Performance Monitoring
各 event とともに response time と status code を記録し、error rate を billing data の隣に表示します。
Multi-Tenant SaaS
異なる endpoint における API consumption に対して customer に請求します。
各 event には、請求対象の customer の Dodo Payments customer ID が必要です。この ID は
cus_ で始まります。customer の作成時に user record とともに保存し、customerId として渡してください。クイックスタート
API call を追跡するには、package をインストールし、meter を作成して、各 call に対して event を送信します。1
Install the SDK
Dodo Payments Ingestion Blueprints package をインストールします:
2
Get Your API Keys
Dodo Payments dashboard の Developer → API Keys で Dodo Payments API key を作成し、
DODO_PAYMENTS_API_KEY environment variable に保存します。構築中は test mode key を使用してください。test mode key は test_mode でのみ使用できます。3
Create a Meter
Dodo Payments dashboard で Products → Meters に移動し、Create Meter をクリックします。次の field を設定します:
- Meter Name:
API Callsなどの説明的な名前。 - Event Name:
api_call、または任意の名前。code 内のeventNameと完全に一致する必要があります(大文字と小文字を区別)。 - Aggregation Type: call 数に基づいて請求するための Count。
- Measurement Unit: 請求書に表示される単位。例:
calls。
endpoint、method、status_code などの metadata key に条件を追加します。4
Track API Calls
API key と event name を指定して
Ingestion instance を 1 つ作成し、pattern を選択します。call ごとに 1 つの event を送信する方法、high volume 向けの batch、またはすべての request を追跡する Express.js middleware から選択できます。middleware では、req.user は authentication middleware から取得され、その id は Dodo Payments customer ID である必要があります。sign in していない user からの request には anonymous が customer ID として送信されますが、これはどの customer とも一致しません。Configuration
Ingestion Configuration
new Ingestion() に次の option を渡します:
string
必須
dashboard から取得した Dodo Payments API key。
string
Environment mode:
test_mode または live_mode。デフォルトは test_mode です。Dodo Payments SDKs のデフォルトは代わりに live_mode であるため、production では live_mode を明示的に設定してください。string
必須
meter の Event Name と一致する event name(大文字と小文字を区別)。この instance が送信するすべての event で使用されます。
API Call の追跡 option
trackAPICall() と batch.add() に次の option を渡します:
string
必須
call の請求対象となる Dodo Payments customer ID。例:
cus_123。object
API call に関する任意の metadata。endpoint、method、status code、response time などを指定できます。各 value は string、number、または boolean である必要があります。API は nested object、array、
null value を拒否します。Batch Configuration
createBatch(ingestion, options) は event を memory にキューに追加し、3 つの method を持つ object を返します。add() は event をキューに追加し、flush() はキューに追加された event を送信し、cleanup() は event を送信して timer を停止します。flush では、event ごとに 1 つの ingest request を並列で送信します。
number
即時 flush を実行するキュー内の event 数。デフォルト:
100。number
batch が flush されるまで、最後に
add() を呼び出してから待機する時間(ミリ秒)。add() を呼び出すたびに timer が再開されます。デフォルト: 5000(5 秒)。ベストプラクティス
batch は flush されるまで event を memory に保持し、送信に失敗した event の retry は行いません。automatic flush では、console.error を使用して error を log に記録します。flush() または cleanup() を呼び出すと、その error が throw されます。