@dodopayments/ingestion-blueprints als trackAPICall() enthalten, das ein Ereignis pro Aufruf sendet, sowie als createBatch(), das Ereignisse bei hohen Anfragevolumen in eine Warteschlange stellt.
Anwendungsfälle
Der API Gateway Blueprint eignet sich für folgende Szenarien:API-as-a-Service
Erfassen Sie auf einer API-Plattform die Aufrufe pro Kunde und rechnen Sie anhand der Anzahl der Aufrufe ab.
Rate Limiting
Erfassen Sie das Aufrufvolumen jedes Kunden, um nutzungsbasierte Rate Limits zu bestimmen. Der Blueprint erfasst die Nutzung, setzt aber keine Limits durch.
Performance Monitoring
Erfassen Sie Antwortzeiten und Status codes mit jedem Ereignis, damit Fehlerraten neben den Abrechnungsdaten angezeigt werden.
Multi-Tenant SaaS
Stellen Sie Kunden ihre API-Nutzung über verschiedene Endpunkte hinweg in Rechnung.
Jedes Ereignis benötigt die Dodo Payments-Kunden-ID des Kunden, dem Sie die Kosten in Rechnung stellen. Diese beginnt mit
cus_. Speichern Sie sie beim Erstellen des Kunden zusammen mit Ihrem Benutzerdatensatz und übergeben Sie sie als customerId.Schnellstart
Um API-Aufrufe zu erfassen, installieren Sie das Paket, erstellen Sie einen Meter und senden Sie für jeden Aufruf ein Ereignis.1
Install the SDK
Installieren Sie das Dodo Payments Ingestion Blueprints-Paket:
2
Get Your API Keys
Erstellen Sie unter Developer → API Keys im Dodo Payments-Dashboard einen Dodo Payments API-Schlüssel und speichern Sie ihn in der Umgebungsvariable
DODO_PAYMENTS_API_KEY. Verwenden Sie während der Entwicklung einen Testmodus-Schlüssel. Ein Testmodus-Schlüssel funktioniert nur mit test_mode.3
Create a Meter
Öffnen Sie im Dodo Payments-Dashboard Products → Meters und klicken Sie auf Create Meter. Legen Sie die folgenden Felder fest:
- Meter Name: ein beschreibender Name, zum Beispiel
API Calls. - Event Name:
api_calloder ein von Ihnen gewählter Name. Er muss exakt (unter Beachtung der Groß- und Kleinschreibung) miteventNamein Ihrem Code übereinstimmen. - Aggregation Type: Count, um nach der Anzahl der Aufrufe abzurechnen.
- Measurement Unit: die auf Rechnungen angezeigte Einheit, zum Beispiel
calls.
endpoint, method oder status_code hinzu.4
Track API Calls
Erstellen Sie eine
Ingestion-Instanz mit Ihrem API-Schlüssel und dem Ereignisnamen und wählen Sie anschließend ein Muster: ein Ereignis pro Aufruf, einen Batch für hohe Volumen oder Express.js-Middleware, die jede Anfrage erfasst. In der Middleware stammt req.user aus Ihrer Authentication-Middleware, und id muss eine Dodo Payments-Kunden-ID sein. Anfragen ohne angemeldeten Benutzer werden mit der Kunden-ID anonymous gesendet, die keinem Kunden entspricht.Konfiguration
Ingestion-Konfiguration
Übergeben Sie diese Optionen annew Ingestion():
string
erforderlich
Ihr Dodo Payments API-Schlüssel aus dem Dashboard.
string
Umgebungsmodus:
test_mode oder live_mode. Der Standardwert ist test_mode. Die Dodo Payments SDKs verwenden dagegen standardmäßig live_mode. Legen Sie daher in der Produktion live_mode explizit fest.string
erforderlich
Ereignisname, der mit dem Event Name Ihres Meters übereinstimmt (unter Beachtung der Groß- und Kleinschreibung). Jedes von dieser Instanz gesendete Ereignis verwendet ihn.
Optionen zum Erfassen von API-Aufrufen
Übergeben Sie diese Optionen antrackAPICall() und batch.add():
string
erforderlich
Die Dodo Payments-Kunden-ID, der der Aufruf in Rechnung gestellt werden soll, zum Beispiel
cus_123.object
Optionale Metadaten zum API-Aufruf, zum Beispiel Endpunkt, Methode, Status code und Antwortzeit. Jeder Wert muss eine Zeichenfolge, eine Zahl oder ein Boolean sein. Die API lehnt verschachtelte Objekte, Arrays und
null-Werte ab.Batch-Konfiguration
createBatch(ingestion, options) stellt Ereignisse im Arbeitsspeicher in eine Warteschlange und gibt ein Objekt mit drei Methoden zurück: add() stellt ein Ereignis in die Warteschlange, flush() sendet die Ereignisse aus der Warteschlange und cleanup() sendet sie und stoppt den Timer. Ein Flush sendet parallel eine Ingest-Anfrage pro Ereignis.
number
Anzahl der Ereignisse in der Warteschlange, die einen sofortigen Flush auslöst. Standardwert:
100.number
Anzahl der Millisekunden, die nach dem letzten
add() gewartet wird, bevor der Batch geflusht wird. Jeder Aufruf von add() startet den Timer neu. Standardwert: 5000 (5 Sekunden).Best Practices
Ein Batch hält Ereignisse im Arbeitsspeicher, bis er geflusht wird, und wiederholt das Senden fehlgeschlagener Ereignisse nicht. Ein automatischer Flush protokolliert den Fehler mitconsole.error. Ein Aufruf von flush() oder cleanup() löst den Fehler aus.