@dodopayments/ingestion-blueprints como trackAPICall(), que envía un evento por llamada, y createBatch(), que pone en cola los eventos cuando hay grandes volúmenes de solicitudes.
Casos de uso
El API Gateway Blueprint es adecuado para estos escenarios:API-as-a-Service
Haz un seguimiento de las llamadas por cliente en una plataforma de API y cobra según el número de llamadas.
Rate Limiting
Registra el volumen de llamadas de cada cliente para informar sobre los límites de velocidad basados en el uso. El blueprint registra el uso, pero no aplica los límites.
Performance Monitoring
Registra los tiempos de respuesta y los códigos de estado con cada evento, de modo que las tasas de error aparezcan junto a los datos de facturación.
Multi-Tenant SaaS
Factura a los clientes por su consumo de la API en diferentes endpoints.
Cada evento necesita el ID de cliente de Dodo Payments del cliente al que facturas, que comienza por
cus_. Guárdalo con el registro del usuario cuando crees el cliente y pásalo como customerId.Inicio rápido
Para hacer un seguimiento de las llamadas a la API, instala el paquete, crea un medidor y envía un evento por cada llamada.1
Install the SDK
Instala el paquete Dodo Payments Ingestion Blueprints:
2
Get Your API Keys
Crea una clave de API de Dodo Payments en Developer → API Keys dentro del panel de Dodo Payments y guárdala en la variable de entorno
DODO_PAYMENTS_API_KEY. Usa una clave de modo de prueba mientras desarrollas. Una clave de modo de prueba solo funciona con test_mode.3
Create a Meter
En el panel de Dodo Payments, ve a Products → Meters y haz clic en Create Meter. Configura estos campos:
- Meter Name: un nombre descriptivo, como
API Calls. - Event Name:
api_callo el nombre que elijas. Debe coincidir exactamente coneventNameen tu código (distingue entre mayúsculas y minúsculas). - Aggregation Type: Count, para facturar según el número de llamadas.
- Measurement Unit: la unidad que se muestra en las facturas, como
calls.
endpoint, method o status_code.4
Track API Calls
Crea una instancia de
Ingestion con tu clave de API y el nombre del evento, y luego elige un patrón: un evento por llamada, un lote para grandes volúmenes o middleware de Express.js que haga un seguimiento de cada solicitud. En el middleware, req.user procede de tu middleware de autenticación y su id debe ser un ID de cliente de Dodo Payments. Las solicitudes sin un usuario autenticado se envían con el ID de cliente anonymous, que no coincide con ningún cliente.Configuración
Configuración de ingestión
Pasa estas opciones anew Ingestion():
Modo de entorno:
test_mode o live_mode. El valor predeterminado es test_mode. En cambio, los SDK de Dodo Payments usan live_mode de forma predeterminada, así que establece live_mode explícitamente en producción.Nombre del evento que coincide con Event Name de tu medidor (distingue entre mayúsculas y minúsculas). Todos los eventos que envíe esta instancia lo utilizarán.
Opciones para hacer un seguimiento de llamadas a la API
Pasa estas opciones atrackAPICall() y batch.add():
Metadatos opcionales sobre la llamada a la API, como el endpoint, el método, el código de estado y el tiempo de respuesta. Cada valor debe ser una cadena, un número o un booleano. La API rechaza objetos anidados, arrays y valores
null.Configuración de lotes
createBatch(ingestion, options) pone los eventos en cola en memoria y devuelve un objeto con tres métodos: add() pone un evento en cola, flush() envía los eventos en cola y cleanup() los envía y detiene el temporizador. Un vaciado envía una solicitud de ingestión por evento, en paralelo.
Milisegundos que se deben esperar después del
add() más reciente antes de vaciar el lote. Cada add() reinicia el temporizador. Valor predeterminado: 5000 (5 segundos).Prácticas recomendadas
Un lote mantiene los eventos en memoria hasta que se vacía y no reintenta los eventos cuyo envío falla. Un vaciado automático registra el error conconsole.error. Una llamada a flush() o cleanup() lo lanza.