Cloudflare Worker

Puedes conectar un Worker de Clodflare a WebHook de Dinaup

Implementar un Worker de Cloudflare entre el webhook de Dinaup y el cliente es una práctica recomendada que aporta múltiples ventajas que optimizan el rendimiento, la seguridad y la gestión del flujo de datos. A continuación, se detallan los beneficios clave:

  • Reescritura de URLs: Permite transformar las direcciones URL para facilitar integraciones con plataformas como Make, Zapier y otras, haciendo más simples las conexiones entre diferentes servicios.

  • Protección del Endpoint. Actúa como una barrera extra que filtra y verifica las solicitudes, ayudando a evitar accesos no autorizados y posibles ataques.

  • Encolado con Cloudflare Queue: Organiza las solicitudes en una cola, lo que ayuda a gestionar mejor los picos de tráfico y evita que el sistema se sobrecargue.

  • Gestión Segura de Secretos: Cloudflare Workers permite almacenar tokens y credenciales en su sistema de secretos. Esto simplifica la gestión de información sensible, manteniendo las claves fuera del código y reduciendo riesgos de exposición.

  • Observabilidad y Monitoreo: Aprovechar la infraestructura de Cloudflare facilita la captura de métricas y logs en tiempo real. Esta visibilidad mejora la capacidad de diagnóstico y el análisis del rendimiento, permitiendo ajustes proactivos.

  • Caching para Acelerar las Llamadas: La posibilidad de implementar técnicas de cache, como configurar un cacheTtl y reescribir cabeceras, permite que las respuestas se sirvan rápidamente a solicitudes repetitivas. Esto reduce la latencia y descarga el backend, mejorando la experiencia del usuario.

Ejemplo Caching

Este worker actúa como un proxy que realiza una solicitud POST. La respuesta se cachea durante 10 segundos tanto en Cloudflare como en el navegador.

const apiUrl = "https://webhook.dinaup.com/api/reports?id=6f3d56a0-0a46-422f-b1dc-ee9cd433cc82&page=1&resultsPerPage=100&withFiles=false&safeColumnsName=false";

export default {
  async fetch(request, env, ctx) {
 
    const init = {
      method: "POST",
      headers: {
        "Authorization": "Bearer " + env.SECRET_TOKEN,
      },
      body: "",
    };

    // Ejecutar la llamada a la URL con opciones de caché: 10 segundos
    const newRequest = new Request(apiUrl, init);
    const response = await fetch(newRequest, {
      cf: {
        cacheTtl: 10,
        cacheEverything: true,
      }
    });

    // Ajustar las cabeceras para que el navegador también cachee la respuesta
    const newHeaders = new Headers(response.headers);
    newHeaders.set("Cache-Control", "public, max-age=10");
    newHeaders.delete("set-cookie");

    return new Response(response.body, {
      status: response.status,
      statusText: response.statusText,
      headers: newHeaders,
    });
  }
};


Última actualización