Crear una REST API usando Express.js con funciones en la nube de Firebase (Cloud Functions)


Cloud Functions para Firebase es un framework sin servidores que te permite ejecutar de forma automática el código de backend en respuesta a las solicitudes HTTPS.

Tu código JavaScript o TypeScript se almacena en la nube de Google y se ejecuta en un entorno administrado.

Primero debemos crear nuestro proyecto en Firebase si no sabes como puedes visitar el link que te dejo a continuación:

Tendrás que configurar una base de datos para ello vamos a nuestra consola de Firebase a la sección de Cloud Firestore

Luego al momento de crear la base de datos seleccionaremos empezar en modo de prueba

Finalmente tendrás que seleccionar la ubicación de la base de datos y habilitarla.

Listo ahora realizaremos las configuraciones en nuestro proyecto con Express

Configurar proyecto Express.js

Para empezar vamos a crear nuestro proyecto agregarnos un directorio con el nombre que elijas para tu propósito, en mi caso será restapi-express-firebase.

Vamos a instalar lo necesario para configurar Firebase en nuestro proyecto se hará una instalación de forma general con el parámetro -g ya que tenemos que conectarnos a los servicios de Firebase, ejecutamos el siguiente comando

npm install -g firebase-tools

Ahora ya podemos usar los comando de Firebase en nuestra consola lo que haremos para empezar es autenticarnos, mediante nuestras credenciales de la cuenta de Google.

firebase login

Se abrirá en tu navegador tu cuenta de Google y debes permitirle que acceda a tus información para Firebase, finalmente te saldrá una pantalla como esta:

Y en tu consola veras lo siguiente

Ejecutamos el comando para inicializar el proyecto de firebase

firebase init

En la consola seleccionamos Functions ya que es el modulo que vamos a usar de Firebase, lo seleccionas con la tecla espacio y le das enter.

Te hara las siguientes preguntas

? Please select an option: (Use arrow keys)

Seleccionas Use an existing project le das enter para continuar

? What language would you like to use to write Cloud Functions?

Seleccionas JavaScript le das enter para continuar

El sistema de firebase hara todo lo que ves a continuacion

Perfecto ya tenemos configurado nuestro proyecto vemos una estructura de carpetas que se ha creado luego del proceso con Firebase

Podemos ver que se han agregado dos dependencias al archivo package.json llamadas «firebase-admin» y «firebase-functions». Las funciones de Firebase nos permiten activar funciones en la nube basadas en Cloud Firestore, Real-Time Database, Firebase Authentication, Google Analytics, etc.

Tenemos que agregar las dependencias necesarias, accedemos a la carpeta functions y ejecutamos los comandos necesarios para crear nuestro servidor express, y agregar los métodos cors a para el acceso de origen cruzado.

npm install express --save
npm install cors --save

Listo ahora nuestro archivo index.js quedara de la siguiente manera

const functions = require("firebase-functions");
const admin = require('firebase-admin');
const express = require('express');
const cors = require('cors')

admin.initializeApp(functions.config().firebase);

const app = express();
app.use(cors());

app.get('/users', (req, res) => { });

app.post('/users', (req, res) => { });

app.put('/users/:id', (req, res) => { });

app.delete('/users/:id', (req, res) => { });

const api = functions.https.onRequest(app)
module.exports = { api }

Ya tenemos todo listo para agregar las operaciones CRUD

Creación del CRUD

Método POST: Creación de usuarios

Creara una colección usuarios, y un nuevo documento ya que Firebase Cloud Firestore es una base de datos NoSQL.

app.post('/users', async (req, res) => {
    try {
        const user = await db.collection('users').add(req.body);
        res.status(201).send('Created a new user: ' + user.id);
    } catch (error) {
        res.status(400).send(error);
    }
});

Método GET: Obtener usuarios

Obtiene todos los documentos de la colección users.

app.get('/users', async (req, res) => {
    try {
        const userQuerySnapshot = await db.collection('users').get();
        const users = [];
        userQuerySnapshot.forEach(
            (doc) => {
                users.push({
                    id: doc.id,
                    data: doc.data()
                });
            }
        );
        res.status(200).json(users);
    } catch (error) {
        res.status(400).send(error);
    }
});

Método PUT: Actualizar usuarios por ID

Le envías un id del documento para actualizar su información

app.put('/users/:id', async (req, res) => {
    await db.collection('users').doc(req.params.id).set(req.body, { merge: true })
        .then(() => res.json({ id: req.params.userId }))
        .catch((error) => res.status(500).send(error))
});

Método DELETE: Eliminación de usuarios por ID

Mediante un id eliminaras el documento de la colección.

app.delete('/users/:id', (req, res) => {
    db.collection('users').doc(req.params.userId).delete()
        .then(() => res.status(204).send("Document successfully deleted!"))
        .catch(function (error) {
            res.status(500).send(error);
        });
});

Subir REST API (Deploy)

Si revisas tu package.json podras ver que ya tienes configurados unos scripts pero en este tutorial vamos a usar uno en especifico.

El deploy que en al momento de correrlo en consola ejecutara firebase deploy –only functions eso quiere decir que solo subira los servicios.

"scripts": {
    "serve": "firebase emulators:start --only functions",
    "shell": "firebase functions:shell",
    "start": "npm run shell",
    "deploy": "firebase deploy --only functions",
    "logs": "firebase functions:log"
  }

Entonces vamos a ejecutar el comando:

npm run deploy

Veras algo parecido a lo siguiente luego de ejecutar el comando.

Si vamos a nuestra consola de Firebase y nos dirigimos a Functions y veremos nuestro servicio activo

Ahora podemos crear muchos mas servicios dependiendo de las necesidades que tengamos y esto nos abre la puerta a los microservicios.

Puedes encontrar el código fuente de este tutorial en GitHub

Probamos nuestra api con Postman si no sabes que es mira el siguiente enlace:

Recomendado

Deja un comentario

Tu dirección de correo electrónico no será publicada.

aprende a programar aprende a programar desde cero aprende a programar con el chavo aprende a programar como si estuviera en primero pdf aprende a programar con python aprende a programar gratis aprende a programar con kotlin pdf aprende a programar con java pdf aprende a programar android aprende a programar arduino aprende a programar android con kotlin + firebase + google aprende a programar argentina aprende a programar arduino pdf aprende a programar android con kotlin + firebase + google mega aprende a programar android desde cero aprende a programar app aprender a programar blockchain aprender a programar basico aprender a programar buenos aires aprender a programar barcelona aprender a programar bases de datos aprender a programar bogota aprender a programar bash aprender a programar binario aprende a programar con google aprende a programar con kotlin aprende a programar desde cero gratis aprende a programar desde cero pdf aprende a programar dev aprende a programar desde cero en c/c++ parte 1 (primer programa) aprende a programar desde cero – lógica de programación mega aprende a programar diset aprende a programar desde cero en python aprende a programar en una semana con javascript aprende a programar en c aprende a programar en python aprende a programar en java aprende a programar en una semana con javascript pdf aprende a programar en c de 0 a 99 pdf aprende a programar en 20 minutos aprende a programar facil aprende a programar free aprender a programar front end aprender a programar forocoches aprender a programar facil y rapido aprender a programar fivem aprender a programar fortran aprender a programar firmware aprende a programar google aprende a programar gobierno de la ciudad aprende a programar guía visual de programación aprende a programar guía visual de programación pdf aprender a programar gratis en español aprender a programar gratis desde cero aprender a programar gratis para niños aprende a programar html aprende a programar html y css aprender a programar html5 desde cero aprender a programar html5 aprender a programar html pdf aprender a programar hackear aprender a programar en haskell pdf aprender a programar en html gratis aprender a programar inteligencia artificial aprender a programar ios aprender a programar ios desde cero aprender a programar in python aprende a programar con java (informática) pdf aprende a programar jugando aprende a programar java aprende a programar jugando con scratch aprende a programar javascript aprende a programar juegos aprende a programar jugando con scratch pdf aprende a programar java desde cero aprende a programar juegos con python aprender a programar kotlin aprender a programar knx aprender a programar kuka aprender a programar khan academy aprender a programar karel aprende a programar con kotlin pdf gratis aprende a programar con kotlin luján pdf aprende a programar libro aprende a programar libro pdf aprender a programar lego mindstorms ev3 aprender a programar lua aprender a programar logo siemens aprender a programar linux aprender a programar lenguaje c aprender a programar logo aprende a programar max wainewright pdf aprende a programar max wainewright aprende a programar microsoft aprende a programar macros desde 0 aprender a programar macros en excel desde cero aprender a programar minecraft aprender a programar mql5 aprender a programar mario rodriguez rancel pdf aprende a programar niños aprende a programar nacho cabanes aprender a programar niños 10 años aprender a programar .net aprender a programar .net desde cero aprender a programar niños microsoft aprender a programar netbeans aprender a programar niños 3 años aprende a programar online aprende a programar.org aprender a programar en octave aprender a programar orientado a objetos juegos para aprender a programar online como aprender a programar y no morir en el intento aprender a programar html y css aprender a programar algoritmos y fundamentos de programación pdf aprende a programar pdf aprende a programar python aprende a programar para niños aprende a programar php aprende a programar python desde cero aprende a programar pdf gratis aprende a programar paginas web aprende a programar planeta junior aprender a programar que lenguaje quiero aprender a programar que lenguaje me recomiendan aprender a programar para que sirve que se aprende a programar aprende a programar registros aprender a programar rapido aprender a programar raspberry pi aprender a programar reddit aprender a programar raspberry pi 3 y python pdf aprender a programar rpa aprender a programar robot kuka aprender a programar r aprende a programar swift pdf aprende a programar swift aprende a programar scratch aprender a programar sin computadora aprender a programar sql desde cero aprender a programar sql aprender a programar software aprender a programar solo aprende a programar televisa aprende a programar tu primera calculadora aprender a programar trabajando aprender a programar torno cnc aprender a programar tia portal aprende a programar crea tu propio sitio web pdf aprende a programar crea tu propio sitio web aprender a programar por tu cuenta aprende a programar un robot aprende a programar un robot cokitos aprende a programar usando javascript 2013 curso en español aprende a programar un juego aprender a programar unity aprender a programar una app aprender a programar una pagina web aprender a programar udemy aprende a programar videojuegos aprende a programar videojuegos con game maker studio 2 aprende a programar vba aprende a programar videojuegos con scratch aprende a programar visual studio 2010 aprender a programar visual basic excel aprender a programar vba excel aprender a programar valencia aprende a programar web aprender a programar web desde cero aprender a programar wordpress aprender a programar wikihow aprender a programar windows aprender a programar webs aprender a programar windows forms c# aprender a programar xcode desde cero aprender a programar xataka aprender a programar xml aprender a programar xcode aprender a programar en xamarin aprende a programar ya aprende a programar youtube aprender a programar en php y mysql desde cero aprender a programar do zero aprender a programar do zero gratis aprender a programar do zero pdf aprender a programar android do zero aprende a programar desde cero udemy aprende a programar desde cero en java aprende a programar desde cero en c aprender a programar desde cero android aprender a programar desde cero app aprende a programar arduino desde cero aprender a programar apps desde cero aprender a programar arduino desde cero pdf aprender a programar android desde cero pdf aprender a programar aplicaciones desde cero aprender a programar aplicaciones moviles desde cero aprender a programar desde cero visual basic bootcamp aprende a programar desde cero arduino tutorial basico aprende a programar desde cero aprende a programar desde cero c++ aprender a programar desde cero con python aprender a programar desde cero coursera aprender a programar desde cero con visual basic aprender a programar desde cero en c# pdf aprender a programar en java desde cero con netbeans aprender a programar en java desde cero con eclipse aprende a programar de cero aprender a programar de cero gratis fundamentos de programación – aprende a programar desde cero descargar aprender a programar en delphi desde cero aprendiendo a programar a partir de cero aprendiendo a programar a partir de cero pdf aprender a programar con java. de cero hasta hacer sistemas aprender a programar desde cero en visual studio aprender a programar desde cero en mac aprender a programar desde cero en html fundamentos de programación – aprende a programar desde cero fundamentos de programación – aprende a programar desde cero mega aprender a programar desde cero gratis en español aprender a programar desde cero gratis pdf aprender a programar java desde cero gratis aprender a programar arduino desde cero gratis como aprender a programar desde cero gratis para niños aprender a programar en python desde cero gratis aprender a programar en c++ desde cero gratis aprender a programar desde cero html aprender a programar en html desde cero pdf aprender a programar con java. de cero hasta hacer sistemas mega aprender a programar con java. de cero hasta hacer sistemas descargar aprender a programar desde cero java aprender a programar desde cero javascript aprender a programar desde cero jugando aprende a programar java desde cero pdf aprender a programar juegos desde cero aprende a programar en java desde cero udemy aprender a programar en javascript desde cero pdf aprender a programar desde cero libro libros para aprender a programar desde cero pdf aprender a programar en linux desde cero pdf aprender a programar en linux desde cero aprender a programar microcontroladores desde cero aprender a programar en matlab desde cero aprender a programar en matlab desde cero pdf aprender a programar en mysql desde cero aprender a programar desde cero niños aprender a programar en .net desde cero pdf aprender a programar en netbeans desde cero aprender a programar en java desde cero con netbeans pdf aprender a programar desde cero online aprender a programar desde cero gratis online aprende a programar con ruby (desde cero y 100 en español) aprender a programar desde cero python aprender a programar desde cero para niños aprendiendo a programar desde cero patricia salazar pdf aprender a programar desde cero pdf gratis aprender a programar desde cero php aprender a programar desde cero pseint aprendiendo a programar desde cero patricia salazar quiero aprender a programar desde cero aprender a programar en r desde cero aprender a programar en ruby desde cero pdf aprender a programar desde cero sql aprender a programar swift desde cero como se aprende a programar desde cero tutorial aprender a programar desde cero tutoriales para aprender a programar desde cero udemy aprende a programar y crea tus programas desde cero aprender a programar desde cero en unity aprender a programar arduino uno desde cero aprender a programar videojuegos desde cero aprender a programar desde cero web aprender a programar desde cero youtube aprende a programar con el chavo pc aprende a programar con el chavo apk aprende a programar con el chavo del 8 aprende a programar con el chavo descargar aprende a programar con el chavo para pc aprende a programar con el chavo juego aprende a programar con el chavo.com.mx aprende a programar con el chavo app aprende a programar con el chavo para android aprende a programar con el chavo.com aprende a programar con el chavo punto com punto mx como descargar aprende a programar con el chavo descargar aprende a programar con el chavo apk aprende a programar con el chavo en linea aprende a programar con el chavo gratis