¡Listo, listo, fuego!
¡Hola, Tom aquí escribiendo! Si eres un ávido usuario de Firebase, sabes lo sencillo que puede ser el manejo de tu backend sin backend. Gracias a Firebase Functions, solo escribo mi lógica empresarial como una función simple, implemento esta misma función a través de la CLI y puedo acceder a ella desde la nube en cualquier parte del planeta. La configuración en sí es tan simple, que la implementación por sí sola solo toma un par de minutos como máximo. Pero hay un caso especial con Firebase Functions que podría necesitar más trabajo: usar un dominio personalizado y no el proporcionado por Firebase.
El reto
Si solo implementa Firebase Functions como se describe, obtendrá el host en un subdominio de Google, específicamente en
cloudfunctions.net
Para casos de uso simples, esto es principalmente lo que necesita: simplemente implemente la cosa y hágala disponible para consumir. Pero otros casos de uso requieren que su backend sea accesible bajo su dominio. Para este ejemplo, usaré mi propio dominio flaming.codes.
La puesta en marcha
Estos son los requisitos previos, solo para asegurarse:
- has configurado un proyecto de Firebase
- en Hosting, ha configurado su dominio personalizado; este es un proceso sencillo, en el que solo tiene que almacenar un registro TXT en su proveedor de alojamiento
La configuración
Para que su dominio personalizado no solo funcione para su aplicación web alojada, sino también para sus funciones, firebase.json debe actualizarse (explicación después del ejemplo):
{
"functions": {
...
},
"hosting": {
...,
"rewrites": [
{
"source": "/api/**",
"function": "api"
},
{
"source": "!/api/**",
"destination": "/index.html"
}
]
},
...
}
El único truco para que funcione es actualizar la clave de alojamiento, no las funciones, en su firebase.json. Básicamente, lo que estamos haciendo es decirle a Firebase que desde nuestra aplicación web alojada, todas las llamadas a / api / ... deben redirigirse a la función llamada api. Lo que me llevó más tiempo fue el segundo elemento, donde explícitamente tengo que declarar cualquier otra ruta que no sea api para que se maneje como una ruta de aplicación web predeterminada.
Usando la siguiente configuración, la antigua función de nube
https://uscentral1-flaming-codes.cloudfunctions.net/api
por lo tanto se convierte en
https: //flaming.codes/api / ...
Tenga en cuenta que el orden es importante aquí, las reglas de reescritura se procesan desde el primer hasta el último elemento, por lo que en este caso de arriba a abajo, visualmente hablando. El uso de un comodín para volver a mapear todas sus funciones realmente no se recomienda para el uso general, ya que rompería su aplicación web.
Envolver
Y sí, realmente no es magia, pero puede ser de gran ayuda cuando se usan las funciones de Firebase en ciertos casos de uso. Hemos visto cómo reescribir sus funciones en la nube como parte del dominio ya registrado, eliminando así el requisito de un nuevo subdominio personalizado, aunque eso también es posible, pero está fuera del alcance de este tutorial.
- Tom