Cloudflare Worker
Intercala un Cloudflare Worker entre Dinaup y tus webhooks para reescribir URLs, proteger el endpoint y cachear respuestas.
Puedes intercalar un Worker de Cloudflare entre el Webhook de Dinaup y tus sistemas. Esto te aporta:
- Reescritura de URLs: transforma las direcciones para adaptar las peticiones al formato que esperan plataformas como Make, Zapier u otras.
- Protección del endpoint: filtra y verifica las solicitudes antes de que lleguen a Dinaup, para evitar accesos no autorizados.
- Encolado con Cloudflare Queue: organiza las solicitudes en una cola para gestionar picos de tráfico sin sobrecargar el sistema.
- Gestión segura de secretos: almacena tokens y credenciales en el sistema de secretos de Cloudflare, fuera del código.
- Observabilidad: captura métricas y logs en tiempo real con la infraestructura de Cloudflare.
- Caching: configura un
cacheTtly reescribe cabeceras para servir respuestas repetidas sin volver a llamar al backend.
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=<id-de-tu-informe>&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,
});
}
};