La idea de este post es desarrollar un API REST 100% funcional usando NodeJS, ExpressJS y body-parser en el menor tiempo posible y con la mayor funcionalidad. Para ello, nuestra API se encargará de dos cosas: obtener e insertar frases de la serie Rick & Morty en un arreglo.

Para seguir este pequeño tutorial es necesario tener la última versión estable de NodeJS instalada, y haber desarrollado el post anterior sobre web scraping en NodeJS.

Setup

Abrimos la terminal y creamos un nuevo proyecto de NodeJS con

npm install -y

e instalamos las dependencias con

npm install express body-parser

Servidor básico

Ahora desarrollaremos el API REST. Muy básico, pero también muy funcional:

Lanzamos la aplicación desde la terminal con `node index.js` y si abrimos el navegador, Postman o curl; con la URL http://localhost:3000/ veremos el mensaje Hello world!

Express y Body Parser

Como pudimos ver en los comentarios del código, express nos sirve para crear aplicaciones web, APIs e infraestructura de servidor de manera fácil y flexible. Ahora, si recuerdas un poco sobre HTTP, sabrás que cuando enviamos una petición POST esta tiene un cuerpo con la información que envíamos al servidor. Precisamente para eso es body-parser: convierte este cuerpo en un objeto accesible desde la propiedad req.body.

Las Frases de Rick

Como ya lo comentamos anteriormente, usaremos las frases que obtuvimos con nuestro web scraper y las lanzaremos desde un endpoint. Para eso creamos el archivo quotes.js de la siguiente manera:

Lo importamos y creamos una función para obtener una de las frases de manera aleatoria, lo agregaremos a un nuevo endpoint y crearemos otro para obtener todas las frases:

Ahora, ¿que pasa si quisiéramos agregar una nueva frase a la lista? Tan sencillo como hacer uso de body-parser:

Para probar que todo está saliendo bien, podemos validarlo con curl:

curl -d '{"quote":"Test from Curl"}' -H "Content-Type: application/json" http://localhost:3000/quote

Conclusiones

Crear APIs REST con NodeJS y ExpressJS es sumamente sencillo y flexible ya que en unos cuantos minutos pudimos crear 4 endpoints totalmente funcionales. Si bien es cierto, todo lo pusimos en un solo archivo (y eso no cumple mucho el clean code) es 100% funcional. Te prometo que regresaremos a refactorizarlo (y pagar la deuda técnica) en siguientes posts.

Nota: Te dejo el código completo de este proyecto en GitHub.