Como construir un API REST con NodeJS (Primera parte)

Construir un API REST con NodeJS - Primera parteHoy en día, es más notable la necesidad de construir API’s para nuestras aplicaciones, las cuales nos permitan integrar nuestras aplicaciones con otras aplicaciones, o simplemente, con una serie de servicio alojado en el servidor. Desde el nacimiento de SOA, han surgido varias propuestas para satisfacer la necesidad de construir servicios para nuestras aplicaciones, tal es el caso de los servicios SOAP y REST, pero también han surgido nuevos conceptos como Backend as a Service (BaaS) y nuevas tecnologías como GraphQL. Sin embargo, una de las grandes constantes de las aplicaciones más importantes, es proporcionar un API REST, debido a que se ha convertido en la forma más simple para integrar al Backend con las aplicaciones modernas basada en JavaScript, como lo es React, Angular, etc.

 

Construir un API REST es realmente simple, y más aún, si cuentas con las tecnologías adecuadas. En este sentido, NodeJS + Express, se ha convertido en la combinación perfecta para realizar esta tarea, pues es posible construir y levantar un API REST en cuestión de segundos.

Preparando el proyecto

 

Lo primero será crear un nuevo proyecto desde el cual estaremos trabajando, para ello, crearemos una nueva carpeta en cualquier parte y nos ubicaremos en ella a por medio de la línea de comandos. Una vez allí, ejecutaremos el comando npm init , el cual nos solicitará algunos datos referentes al proyecto, al finalizar, nos habrá creado el archivo package.json y una carpeta llamada node_modules, la cual contiene todas las librerías estándar de NodeJS.

 

En este punto, tendremos que instalar los módulos de NPM que vamos a requerir, para ello, ejecutaremos los comandos:

  • npm install –save express
  • npm install –save body-parser

Express es el módulo más popular para desarrollos web en NodeJS y además, es especialmente útil para la construcción de API’s, por otra parte, el Middleware body-parse, que anteriormente era parte de Express, nos ayudará a procesar el payload (o body) del request, el cual nos lo dejar listo y en el formato que lo necesitamos, en este caso, en JSON.

En este punto, tendremos un archivo package.json  muy parecido al siguiente:

 

Levantando un servidor

 

El siguiente paso será montar un servidor usando NodeJS + Express, para lo cual, tendremos que crear un nuevo archivo llamado server.js  directamente sobre la raíz del proyecto, el cual se verá de la siguiente manera:

Con estas simples líneas, hemos creado un servidor web capaz de servir peticiones web, sobre el cual montaremos nuestra API REST. Antes de ejecutar este código, vamos a analizar qué está pasando. Lo primero que podemos apreciar, es que importamos el módulo Express del que ya hablamos y el módulo Http, el cual es parte del estándar NodeJS, por lo que hace falta instalarlo con NPM. Este segundo módulo es utiliza para crear oyentes capases de escuchar peticiones HTTP en un determinado puerto. El segundo paso será crear una instancia de Express, como podemos observar en la línea 3.

 

Una vez hechos con la instancia de Express, solo nos resta crear los Routers, los cuales son las reglas por medio de las cuales Express sabrá como procesar las diferentes peticiones en diferentes URL’s, para lo cual, Express proporcionar una serie de funciones para procesar los diferentes métodos que soporta HTTP, como es GET, POST, DELETE, PUT, etc. En este caso, hemos creado un router para atender las peticiones que lleguen a la raíz del servidor. Es por eso la importancia de la línea 5, la cual responderá con la frase “Welcome to API REST” al recibir una petición GET a la raíz del servidor.

 

Al igual que tenemos la función GET, tenemos todas las demás, por ejemplo, POST, DELETE, PUSH, PUT, etc. las cuales se definen de la misma forma que GET, pero solo es necesario cambiar la función con la del método HTTP deseado, por ejemplo: app.post(), app.delete(), app.push(), app.put(). Todas estas variantes, reciben dos parámetros, el primero es la URL en la cual responden y el segundo es una función (Callback) la cual será ejecutada una vez que una petición sea recibida.

 

Finalmente, y una vez que tenemos todas las reglas de routeo (routers), tendremos que crear un oyente para recibir las peticiones, para ello nos apoyamos del módulo Http como podemos ver en la línea 9. El server Http lo creamos (createServer) pasando como parámetro la instancia de Express para finalmente levantar el servidor con la función listener. Esta última, recibe el puerto en el que escucha y una callback que se ejecuta una vez levantado el server.

 

Probando el servidor

 

Una vez que tenemos una primera versión de nuestro servidor, solo nos queda probarla para asegurarnos de que todo funciona bien, por lo cual, regresamos la línea de comandos y ejecutamos node server.js , como resultado tendremos lo siguiente:

API REST - start nodejs

Una vez tenemos la confirmación de que nuestro server esta arriba, procedemos con probarlo con el navegador, por lo que entramos a la URL http://localhost:8001 y veremos el siguiente resultado:

API REST - test server

Si ves esto, es porque nuestro servidor ya está listo. No es gran cosa, pero al menos ya es avance para construir nuestra API REST.

Ya con esto, tenemos todo preparado para iniciar con la construcción de nuestros servicios, pero esto lo dejaremos para la segunda parte de este artículo.

 

 

Continuación (Segunda parte)

 

 

 

Artículos relacionados

Introducción a NodeJS (JavaScript del lado del Ser... NodeJS es sin duda una de las tecnologías que más rápido está creciendo, y que ya hoy en día es indispensable para cubrir posiciones de trabajo. NodeJ...
Autenticación con JSON Web Tokens Los JSON Web Tokens (JWT) se ha convertido rápidamente en un estándar en la autenticación de aplicaciones, pues permite de una forma simple y elegante...
Embeber llave primaria con @EmbeddedId Otra manera de definir llaves primarías compuestas es con la Enumeración @EmbeddedId, la cual permite marcar una clase como ID. A diferencia de @IdCla...

Oscar Blancarte

Ideológico, Innovador y emprendedor, Padre, Tecnólogo y Autor, amante de la ciencia y la tecnología en todos sus colores y sabores. Arquitecto de software & Full Stack Developer con experiencia en la industria del desarrollo de software y la consultoría. Amante de la programación y el Ajedrez.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *