Cómo crear una API con LoopBack

Archivada en Desarrollo Web

Cómo crear una API con LoopBack

El objetivo ahora que conocemos los conceptos básicos de LoopBack es empezar a crear el servidor backend del cuadro de mando. Vamos a empezar con el control de personal que sirve en realidad para el control de competencias, según la norma ISO 9001.

En realidad esta aplicación cumple con varios propósitos, por un lado es el control de personal, es decir el nombre, puesto y sitio de todos los que trabajamos en la delegación. Pero también sirve como almacén de evidencias documentales de las competencias de experiencia, habilidades y educación. Y por último, sirve para controlar la formación, ya que lleva un registro de todos los cursos que se han proporcionado al personal, ya sea de Oficinas Centrales, internos o externos.

Vamos a empezar con la parte más simple de la aplicación, el control de personal, pero no por ser simple no es retadora, ya que usaremos tres tablas relacionadas para formar cada registro. Veamos la siguiente figura.

Este es el modelo básico, que es muy limitado. Por ejemplo, la tabla Sitio solo toma en cuenta a Tlaxcala (en general a una sola entidad) y tendrá que ampliarse para que acepte más entidades. Un dato interesante sobre esta tabla, es que el campo teléfonos es un objeto JSON para almacenar varios datos en un solo campo. La tabla Puestos necesita un campo orden para asegurar que la alta dirección siempre aparezca primero.

Aunque limitado, lo importante de este modelo son las relaciones, indicadas por las flechas, que deben tomarse en cuenta no solo en el backend, sino también en el frontend.

Creando los modelos

Ya vimos en el artículo anterior como crear un modelo Sitios, y vamos a usar la misma estrategia para el modelo Puestos, es decir, lo vamos a crear usando la interface de línea de comandos lb.
 /Volumes/datos/projects/lb-cmi  lb model
? Enter the model name: puesto
? Select the data-source to attach puesto to: db (memory)
? Select model’s base class PersistedModel
? Expose puesto via the REST API? Yes
? Custom plural form (used to build REST URL): puestos
? Common model or server only? common
Let’s add some puesto properties now.

Enter an empty property name when done. ? Property name: puesto invoke loopback:property ? Property type: string ? Required? Yes ? Default value[leave blank for none]:

Let’s add another puesto property. Enter an empty property name when done. ? Property name: clave invoke loopback:property ? Property type: string ? Required? Yes ? Default value[leave blank for none]:

Let’s add another puesto property. Enter an empty property name when done. ? Property name: orden invoke loopback:property ? Property type: number ? Required? Yes ? Default value[leave blank for none]:

Let’s add another puesto property. Enter an empty property name when done. ? Property name: /Volumes/datos/projects/lb-cmi $

El campo nombre es de tipo texto, no se validará la extensión, aunque sería bueno validar que sea único. El campo clave debe ser de tres o cuatro letras, será necesario validar la extensión y también que sea único. El campo orden que es numérico no necesita muchas validaciones, pero bueno, ya veremos.

Usando el API Explorer

Antes de continuar con el tercer modelo, vamos a familiarizarnos con el API Explorer y a realizar algunas operaciones básicas en el navegador y en la consola. Dentro del directorio de nuestro proyecto ejecutamos la siguiente orden para arrancar el servidor:
> $ node .                                                                                                   
Web server listening at: http://0.0.0.0:3000 Browse your REST API at http://0.0.0.0:3000/explorer
Con esto podemos visitar el API Explorer que inicialmente nos presenta el primer nivel de la API. Al hacer clic en el enlace sitio vemos todos los endpoints que están disponibles para ese endpoint. Como podemos apreciar, tenemos todos los verbos de una API RESTFul completa, sin tener que escribir una sola línea de código, solo contestando algunas preguntas. Ahora vamos a hacer clic en el verbo POST del endpoint sitios, y veremos la siguiente pantalla. Como recordamos del artículo anterior, no debemos usar el id porque ese es automático, así vamos a usar este JSON:
{
  “nombre”: “Junta Local”,
  “direccion”: “Xicohtencatl 7, Centro. Tlaxcala, Tlax.”,
  “telefonos”: {
    “Ejecutiva”: “(246) 123 456”,
    “Secretario”: “(246) 456 789”,
    “Registro”: “(246) 987 654”
  }
}
Al oprimir el botón Try it out! obtenemos esto: La respuesta nos muestra el código curl para subir los datos, la respuesta exitosa, el código de respuesta y los encabezados de respuesta. Ahora podemos ver otros enlaces, como el endpoint GET para ver la respuesta del servidor, usar filtros, etc. Más adelante veremos como usar el Token que se ve en la parte superior, pero primero tenemos que conectar nuestra API a una fuente de datos para hacerlos persistentes, como por ejemplo a una base de datos como MongoDB.

Javier Sanchez Toledano

Auditor Líder ISO 9000 ● Desarrollo Web Full Stack ● Django/Python ● JavaScript · NodeJS · Angular · VueJS · EmberJS ● Swift 4 ● WordPress · Genesis Framework ● Lector ● Fotografo aficionado ● Generación X ● Soy de Tlaxcala

Tlaxcala, México

Comentarios