A diferencia de los otros tipos de Cloud Functions, necesitamos un servidor donde podamos llamar y ejecutar nuestras funciones HTTP. En vez de utilizar el comando firebase deploy --only functions vamos a utilizar el comando firebase serve --only functions y automáticamente vamos a desplegar nuestras funciones HTTP y podremos probarlas utilizando herramientas como Postman 😃.
Recursos
Resumen
Validar una función HTTP en Firebase de forma local y luego en producción es clave para iterar rápido y con confianza. Aquí verás cómo revisar el código con Express, emular con Firebase, probar con Postman, desplegar solo la función necesaria y verificar respuestas 200 OK, manejo de índices en Firestore y envío de correos.
¿Cómo preparar el código y los datos para la prueba?
Antes de ejecutar, conviene una revisión rápida. Se importa Express y se obtiene la instancia con paréntesis. Se define un endpoint con método POST y se versiona la ruta con /V1. Desde Firestore se recuperan los emails, se recorren y se concatenan separados por comas. Luego se envían a la librería de utilidad de correo. Si Firestore solicita crear un índice, se usa la combinación de campos publicado y fecha.
- Importar Express e instanciar: asegurar paréntesis para la instancia.
- Definir POST con versión: usar ruta /V1.
- Consultar Firestore: recuperar emails de usuarios.
- Concatenar correos: separar por comas para el envío.
- Enviar con librería de correo: utilizar la data preparada.
- Índice en Firestore: publicado + fecha; si aparece aviso, crearlo desde el enlace.
¿Cómo emular con firebase functions:shell?
Se crea un ambiente local que emula las funciones y permite invocarlas como si fuera un cliente. Tras iniciar, se llama la función HTTP con POST, se incluye /V1 y se envían datos tipo JSON mediante .form. La respuesta esperada es 200 OK indicando que el correo se envió correctamente.
- Iniciar el emulador local.
- Invocar la función HTTP con método POST.
- Añadir /V1 a la ruta.
- Enviar datos con .form usando JSON de prueba.
- Verificar 200 OK y recepción del correo.
Comando base:
firebase functions:shell
¿Cómo probar con servidor local y Postman?
Además del shell, se puede montar un servidor local de funciones HTTP. Al iniciar, Firebase muestra una URL. Se copia en Postman, se agrega /V1, se selecciona POST y se envía el mismo JSON de prueba. La respuesta esperada es true como confirmación de éxito y se valida la llegada del correo.
- Levantar servidor local solo de funciones HTTP.
- Copiar la URL generada y agregar /V1.
- Configurar Postman con método POST.
- Enviar el cuerpo en JSON y ejecutar.
- Confirmar resultado true y correo recibido.
Comando base:
firebase serve --only functions
¿Qué validar en la respuesta y en el correo?
- Código HTTP 200 OK.
- Resultado true en la respuesta.
- Correo recibido con los posts activos.
¿Cómo desplegar en Firebase y monitorear recursos?
Para publicar, se despliega únicamente la función deseada. Al finalizar, Firebase entrega una URL pública que se puede probar desde Postman agregando /V1. En la consola de Firebase se observan detalles: tipo HTTP, URL, y la memoria asignada por defecto de 256 MB de RAM. También se consultan los registros para confirmar que la ejecución finalizó correctamente.
- Desplegar solo la función objetivo.
- Probar la URL pública con /V1 desde Postman.
- Verificar resultado true y llegada del correo.
- Revisar en Firebase: tipo HTTP, URL y RAM por defecto (256 MB).
- Consultar registros para validar ejecución.
Comando base:
firebase deploy --only functions:enviar:enviar post semana
¿Qué habilidades y conceptos refuerzas?
- Emulación local con Firebase para pruebas rápidas.
- Endpoints versionados con /V1 en Express.
- Manejo de POST con datos en JSON.
- Índices compuestos en Firestore (publicado + fecha).
- Verificación de 200 OK y resultado true.
- Uso de Postman para pruebas de HTTP.
- Despliegue selectivo de funciones y análisis de registros.
¿Tienes dudas sobre la emulación, el índice de Firestore o el despliegue selectivo? Comparte tu pregunta y cuéntame qué parte te gustaría profundizar.
