RESTFul API con NodeJs y Express

Vamos a implementar nuestra primera API haciendo uso de NodeJs y Express.

Rodríguez Patiño, Eduardo
2020-10-01 | 473 lecturas

Muy bien, en esta nueva lección vamos a ver como crear una RESTFul API a través de NodeJs.

Asimismo, sería bueno que le den una mirada a nuestra entrada anterior donde hicimos una introducción a Express ya que, usaremos lo que creamos allí para implementar nuestra primera API.

Routes

Para definir nuestros endpoints se hace mediante el mecanismo de routing de express el cual lo podemos inicializar luego de configurar express.

const express = require('express'),
    app = express();

Teniendo inicializado esto ya podemos defenir nuestros endpoints.

app.get('/', (req, res) =>
    res.send('Hello Kodoti!')
);
  • El primer parámetro es la URl, en nuestro caso le diremos que responda a la URL principal de nuestra API.
  • El segundo parámetro es una función que recibe 2 objetos. El primer objeto hace referencia al request y el segundo al response de la petición actual.

GET

Cuando queremos listar toda la información de nuestro recurso usuario.

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

Cuando queremos traer un solo registro de nuestro recurso usuario.

app.get('/users/:id', (req, res) => {
    res.send('User ' + req.params.id);
});

Los parámetros dentro de la URI los hacemos a través de ":", en nuestro caso hemos definido un parámetro :id y es accesible mediante el objeto request y su propiedad params.

req.params.id

POST

Cuando queremos crear un nuevo recurso, en nuestro caso del tipo usuario.

app.post('/users', (req, res) => {
    // Created
    res.status(201);
    res.send(req.body);
});
  • Le hemos dicho que queremos que el status code de respuesta sea 201.
  • Que retorne lo que el cliente ha pasado que en la práctica debería ser la llamada a nuestro insert de la base de datos.

Nota: es usual que cuando mandemos información al servidor lo hagamos a través de un JSON. Por ende, debemos habilitar dicho comportamiento a nuestro proyecto porque sino no vamos a poder leer la información.

app.use(express.json());

PUT

Cuando queremos actualizar un recurso.

app.put('/users/:id', (req, res) => {
    // Lectura del parámetro
    let id = req.params.id;

    // No Content
    res.status(204);
    res.send(req.body);
});

DELETE

Cuando queremos eliminar un recurso.

app.delete('/users/:id', (req, res) => {
    // Lectura del parámetro
    let id = req.params.id;
    console.log(id);

    // No Content
    res.status(204);
    res.send();
});

Conclusiones

Hemos visto como crear una API de manera sencilla lo que faltaría ahora es ordenarnos porque tal como esta no es muy escalable el proyecto.

const express = require('express'),
    app = express(),
    port = 3000;

// configuración
app.use(express.json());

// endpoint por defecto
app.get('/', (req, res) => res.send('Hello Kodoti!'));

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

app.get('/users/:id', (req, res) => {
    res.send('User ' + req.params.id);
});

app.post('/users', (req, res) => {
    // Created
    res.status(201);
    res.send(req.body);
});

app.put('/users/:id', (req, res) => {
    // Lectura del parámetro
    let id = req.params.id;
    console.log(id);

    // No Content
    res.status(204);
    res.send(req.body);
});

app.delete('/users/:id', (req, res) => {
    // Lectura del parámetro
    let id = req.params.id;
    console.log(id);

    // No Content
    res.status(204);
    res.send();
});

// en que puerto se va a ejecutar la aplicación
app.listen(
    port,
    () => console.log(`Running on http://localhost:${port}`)
);