Como crear una API con ExpressJS y Node
Tags: node, tutorial, javascript, spanish
Published: 2022-12-07 15:08:04

Cuando hablamos de desarrollo móvil, es muy normal interactuar con APIs constantemente. Pero si bien podemos usar una librería como Retrofit para [llamar APIs e interactuar con sus respuestas](https://dev.to/maxwellnewage/como-implementar-retrofit-en-nuestra-app-4m9p), es importante también tener una idea general de como crearlas.

## Pero que es exactamente una API?
![API](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0csw0wwo8175jqonczge.png)
Una API (Application Programming Interface) es como una caja negra donde pedimos cierta información y la recibimos en un determinado formato (JSON o XML en general). Existen APIs locales (como GPS de Android, la cual nos permite acceder a datos de geolocalización) y APIs remotas (como Google Maps, que nos permite acceder a la información del mapa, direcciones y demás).

Encontré un video por youtube que explica este concepto mucho más a fondo y ejemplificado:
https://www.youtube.com/watch?v=u2Ms34GE14U

## Entiendo los fundamentos, pero por donde empiezo?
Para plantear el desarrollo de una API, debemos elegir una tecnología de servidor que nos permita crearla de manera ágil. Vamos a usar NodeJS. Pueden descargarlo desde [aquí](https://nodejs.org/es/). Una vez que lo tengan instalado, pueden asegurarse que funciona poniendo en la consola (recomiendo usar [Cmder](https://cmder.net/)) el siguiente comando:

```
$ node -v
```
Si nos devuelve la versión, esta bien instalado. En caso contrario, si nos devuelve algo como “comando no encontrado”, debemos proceder a su reinstalación.

## Un Framework para dominarlos a todos!
Con NodeJS instalado también deberían tener npm (Node Package Manager), el gestor de dependencias de node. Asi que procedemos a crear un proyecto nuevo:
```
$ mkdir miProyecto
$ cd miProyecto
$ npm init
```
Vamos a presionar Enter en todas las opciones que salen, para que el proyecto se configure por defecto. Luego, vamos a escribir:
```
$ npm install express --save
```
Lo cual nos va a instalar Express, el framework de Node que nos permitirá crear páginas webs y APIs. Hoy nos vamos a centrar en lo segundo. El “ — save” se asegura de guardar la dependencia en nuestro package-json para que luego cuando otro desarrollador baje nuestro proyecto, solo tenga que escribir:
```
$ npm install
```
Y con ello se descargan todas las dependencias automáticamente.
## Hola Mundo y un poco mas…
Ahora vamos a crear nuestra API! Va a tener solo un método GET muy simple, pero es un comienzo :).

Vamos a crear un archivo index.js en nuestro directorio del proyecto y agregaremos las siguientes lineas:

```javascript
var express = require('express');
 
var app = express();app.get('/', function (req, res) {
  res.send('Hola Mundo!');
});
 
app.listen(3000, function () {
  console.log('App funcionando en el puerto 3000!');
});
```
Vamos a analizar paso a paso lo que hicimos:

- Creamos un objeto express que contiene la referencia a la dependencia de nuestro framework
- Creamos un objeto app que contiene la inicialización de express.
- Creamos una ruta get a la url http://localhost:3000/ que nos devolverá un párrafo que dice “Hola Mundo!”
- Llamamos al método listen con los siguientes parámetros:
- Puerto: El puerto donde se iniciará nuestro servidor, en este caso 3000.
- CallBack Function: Cuando el servidor termine de levantarse y funcione correctamente, tenemos un callback para hacer algo, y en este caso devolvemos un texto en consola diciendo que fue todo bien y que estamos corriendo en el puerto 3000.

Ya tenemos un proyecto en Express funcionando! Pero no es una API. Para cumplir dicho requisito debería devolvernos un formato de respuesta diferente, en este caso json. Asi que creamos un objeto en java y se lo pasaremos al método res.send():

```javascript
app.get('/', function (req, res) {
  var json = {
    message: "Soy una API!",
    version: 1.0.0
  }  
  res.send(json);
});
```
Y ahora si nos va a devolver un json como corresponde. Podríamos acortar este código y ahorrarnos unas lineas de la siguiente manera:

```javascript
app.get('/', function (req, res) {
  res.send({
    message: "Soy una API!",
    version: 1.0.0
  });
});
```
Para probar el servidor andando vamos a escribir en consola:
```
$ node index.js
```

Y con esto ya tienen una API funcionando, felicidades! 😀

Espero que este artículo les haya sido de utilidad y nos vemos en el siguiente!