Hacer deploy de tu API REST usando Express.js y Heroku

No te ha pasado que creaste una api, muy bonita y todo, pero que te ves obligado a ejecutar localmente en tu computadora cuando quieres usarla, y a fin de cuentas, ¿de qué te sirve si solo puedes usarla en tu computadora?. Vamos a ponerla en linea para darle mayor uso en tus paginas.
Una opción gratuita para subirla es heroku, que con solo tener una cuenta te permite crear la app de tu codigo.

Para seguir este proceso, necesitas instalar con anterioridad Git y Heroku. Ambos están para descargar en sus paginas oficiales. Entonces vamos por pasos.

Configurar puerto del servidor

Tenemos a continuación un código en la que usamos Express.js.

La lógica es muy simple, en la pagina de inicio nos de un mensaje “Servidor con express” y a agregarle a la dirección “/users” nos devuelve el array users con los tres nombres y id’s. Tambien tenemos definido PORT=3001, que significa que en este puerto vamos a poder conectar el servidor de nuestra app localmente, ingresando localhost:3001 en nuestro navegador.
Para poderlo subir a Heroku, solo debemos modicar el puerto como en el siguiente ejemplo:

const PORT=process.env.PORT || 3001;

Al momento de conectarse localmente al servidor, podra seguir usando el puerto 3001 para comunicarse, pero al agregar process.env.PORT, le estamos diciendo que use el puerto que la pagina asigne, o en caso de no asignarsele, use por defecto el 3001. Esto pasa dado que hay paginas que definen el puerto que se va a usar por usted, y si solo lo dejas como PORT=3001, no se podra conectar al puerto de la página y fallará el deployment.

Configurar el package.json

El fin aquí es automatizar que se ejecute el servidor al escribir un comando en la consola. Estan ya en el package.json, en la sección de scripts agregamos "start": "node ..." donde … agregamos la dirección de nuestro archivo .js que acabamos de modificar anteriormente. En este ejemplo, mi archivo index.js se encuentra en la raíz, por lo que lo escribiré asi:

"start":"node index.js" Otro ejemplo podría ser: "start":"node ./lib/server.js" donde el archivo server.js se encuentra en la carpeta lib, y la carpeta lib esta en la raiz del proyecto.

Para verificar que funcione, estando en la consola dentro de nuestra carpeta de proyecto escribe npm start y podrás acceder al servidor local del proyecto.

Archivo Procfile

Ahora nosotros sabemos que si escribimos npm start podemos ejecutar el servidor, pero ahora hace falta decirle a heroku que tiene que ejecutar npm start para que funcione el deployment, por lo que en la carpeta raiz creamos un archivo llamado Procfile, sin agregarle ninguna extensión. Dentro del archivo solo escribimos:

web: npm start

Guardamos y listo. Ahora hay que subirlo a Heroku.

Subirlo a Heroku

Ya habiendo hecho las modificaciones necesarias, hay que subirlo a Heroku, para ello, estando en consola escribimos de uno en uno:

  • git init para iniciar git dentro de la carpeta
  • git add . agregamos todos los archivos a los cambios que vamos a realizar. Aquí se contempla que ya tienes un archivo .gitignore para no subir la carpeta node_modules. Si no lo tienes, crea el archivo y solo escribe node_modules
  • git commit -m"initial commit" para que los archivos se respalden
  • heroku create que nos crea la app que vamos a usar para subir nuestro proyecto
  • git push heroku main envía nuestro codigo a heroku, donde en automatico se deberia de empezar el deployment.

Y listo, al terminar de subirse a heroku deberia de darte una url donde esta la app. Espera unos minutos para entrar y deberia de funcionar bien. Te dejo el ejemplo de una api que subi con este método aquí, y si no quedá o tienes dudas, puedes mandarme dm o mención en twitter, links abajo.
Espero y les haya servido y quede lo más claro posible. Ciao.

Written on June 9, 2022