Loopback, desarrollo avanzado de API's con Node.js
Loopback, desarrollo avanzado de API's con Node.js


Loopback es un framework para Node.js que nos permite desarrollar API’s de forma avanzada.
Desde mi opinión, Loopback no es un framework para un programador con conocimientos básicos de javascript o Node.js, pienso que se debe tener experiencia con estas tecnologías para poder entender su funcionamiento desde 0 y sacarle el máximo provecho, me atrevo a decir que hay que tener un nivel alto con el trabajo en Node.js para poder utilizar Loopback de forma satisfactoria.

Debe quedar muy claro que Loopback no es sólo un framework para el desarrollo de API’s con Node.js, si queremos lo podemos equiparar a Express y Total.js sin ningún tipo de problemas, es decir, podemos crear interfaces tanto en el servidor utilizando pug o handlebars, aunque también podemos utilizar un framework javascript del cliente para poder desarrollar la interfaz en el cliente.

¿Qué nos ofrece Loopback?

Por defecto trae un sistema de ACL (Access Control List) el cual junto con el sistema de Roles nos permiten controlar el acceso a cualquier recurso de una forma tremendamente sencilla.

Loopback nos proporciona una capa de abstracción tremenda a la hora de trabajar con bases de datos, podemos trabajar con nosql, sql o mysql entre otros drivers, pero la forma de acceder a los datos siempre será la misma, es algo muy importante a la hora de trabajar con cualquier framework hoy en día.

Además de todo esto, nos ofrece un sistema de booteo para poder inicializar cualquier script.

También tenemos una forma muy sencilla de auto-ejecutar “migraciones”, simplemente debemos definir los modelos a través de un schema y posteriormente decirle a Loopback que cree la tablas con unos sencillos comandos.

Podemos tener también múltiples tipos de conexión con base de datos, en memoria, nosql, mssql, postgresql o mysql son algunos de los que tenemos disponibles, aunque por defecto trabaja en memoria y no tenemos que realizar ninguna configuración.

No tenemos que escribir ni una línea de código para acceder a los datos ya que Loopback se encarga de poner a nuestra disposición todos los métodos existentes en cualquier api, pero además, nos permite extender de otros modelos para que a partir de ellos podamos acomodar la lógica a nuestras necesidades.

Herencia en Loopback

El caso más claro de extender de un modelo en Loopback es heredar del modelo User el cual ya viene por defecto, este modelo tiene toda la lógica necesaria para crear tokens, iniciar y cerrar sesión o acceder a la información del usuario, pues por ejemplo podrías crear un nuevo modelo Person y que éste extienda de User, con eso el modelo Person tendrá todo lo que tiene User pero además podremos añadirle atributos extra, relaciones y todo lo que necesitemos.

Seguridad en Loopback

Cada endpoint o recurso de nuestra API puede ser controlado por el sistema de ACL a través de un archivo .json que está relacionado con su modelo, por ejemplo, podríamos querer que nadie accediera a la información de un modelo.

O bien podríamos querer que sólo los usuarios autenticados pudieran acceder.

Pues eso también lo podemos hacer con el usuario propietario ($owner) o con un usuario no autenticado ($unauthenticated), pero ademas, también podemos hacerlo con nuestros propios roles.

Autenticación en Loopback

Por defecto Loopback viene con un sistema que protege el acceso a datos basado en tokens, cuando un usuario se autentifica recibe un token el cual puede utilizar en las siguientes peticiones y tiene un ttl, el token que debemos utilizar viene a través de la clave id.

Instalar Loopback-Cli

Ahora que ya conocemos un poco Loopback, vamos a ver cómo instalar su línea de comandos a través de la cual podemos crear nuestro proyecto, modelos, manejar el sistema de ACL y muchas cosas más, para poder instalarla simplemente debemos ejecutar el siguiente comando.

A partir de ahora tendremos disponible el comando lb para poder interactuar con Loopback, sólo necesitas leer un poco la documentación de Loopback y empezar a desarrollar potentes API’s de forma profesional utilizando herramientas desarrolladas y mantenidas por IBM y el equipo StrongLoop.