Utilizando Fedora implementar API REST en JavaScript: parte 2

En la parte 1 anterior, vio cómo crear rápidamente un servicio API simple usando Fedora Estación de trabajo, Express y JavaScript. Este artículo le muestra la simplicidad de cómo crear una nueva API. Esta parte le muestra cómo:

  • Instalar un servidor de base de datos
  • Construir una nueva ruta
  • Conectar una nueva fuente de datos
  • Utilizar Fedora terminal para enviar y recibir datos

Generando una aplicación

Consulte el artículo anterior para obtener más detalles. Pero para simplificar las cosas, cambie a su directorio de trabajo y genere un esqueleto de aplicación.

                      

$ cd our-work-directory
                      
$ npx express-generator –no-view –git /myApp
$ cd myApp
$ npm i

Instalación de un servidor de base de datos

En esta parte, instalaremos la base de datos MariaDB. MariaDB es la Fedora base de datos predeterminada.

                      $ dnf module list mariadb | sort -u ## lists the streams available
$ sudo dnf module install mariadb:10.3 ##10.4 is the latest
                    

Nota: el perfil predeterminado es mariadb/server.

Para aquellos que necesitan hacer girar un contenedor Docker, un contenedor listo para usar con Fedora 31 está disponible.

                      $ docker pull registry.fedoraproject.org/f31/mariadb
                      
$ docker run -d --name mariadb_database -e MYSQL_USER=user -e MYSQL_PASSWORD=pass -e MYSQL_DATABASE=db -p 3306:3306 registry.fedoraproject.org/f31/mariadb

Ahora inicie el servicio MariaDB.

                      $ sudo systemctl start mariadb
                    

Si desea que el servicio se inicie en el arranque, también puede habilitarlo en systemd:

                      $ sudo systemctl enable mariadb ## start at boot
                    

A continuación, configure la base de datos según sea necesario:

                      $ mysql -u root -p ## root password is blank
MariaDB> CREATE DATABASE users;
MariaDB> create user dbuser identified by ‘123456‘;
MariaDB> grant select, insert, update, create, drop on users.* to dbuser;
MariaDB> show grants for dbuser;
MariaDB> q
                    

Se necesita un conector de base de datos para usar la base de datos con Node.js.

                      $ npm install mariadb ## installs MariaDB Node.js connector
                    

Aprovecharemos Sequelize en esta API de muestra. Sequelize es un ORM (Object Relational Mapper) de Node.js basado en promesas para Postgres, MySQL, MariaDB, SQLite y Microsoft SQL Server.

                      $ npm install sequelize ## installs Sequelize
                    

Conexión de una nueva fuente de datos

Ahora, cree una nueva carpeta db y cree un nuevo archivo sequelize.js allí:

                      const Sequelize = require('sequelize'),
  sequelize = new Sequelize(process.env.db_name || 'users', process.env.db_user || 'dbuser', process.env.db_pass || '123456', {
    host: 'localhost',
    dialect: 'mariadb',
    ssl: true
})

module.exports = sequelize
                    

Nota: En aras de la exhaustividad, incluyo un enlace al repositorio de Github relacionado: https://github.com/vaclav18/express-api-mariadb

Vamos a crear un nuevo archivo models/user.js. Una buena característica de un modelo Sequelize es que nos ayuda a crear las tablas y columnas necesarias automáticamente. El fragmento de código responsable de hacer esto se ve a continuación:

                      sequelize.sync({
force: false
})
                    

Nota: nunca cambie a verdadero con una base de datos de producción: ¡eliminaría sus tablas al inicio de la aplicación!

Nos referiremos al sequelize.js creado anteriormente de esta manera:

                      const sequelize = require('../db/sequelize')
                    

Construyendo nuevas rutas

A continuación, creará un nuevo archivo route/user.js. Ya tienes rutas/users.js del artículo anterior. Puede copiar y pegar el código y proceder a editarlo.

También necesitará una referencia al modelo creado previamente.

                      const User = require('../models/user')
                    

Cambie la ruta de la ruta a /usuarios y también cree una nueva correo ruta del método.

Tenga cuidado con la sincronización: espere las palabras clave allí. Una interacción con una base de datos llevará algún tiempo y esta funcionará. Sí, una función asíncrona devuelve una promesa y esta hace que las promesas sean fáciles de usar.

Nota: este código no está listo para la producción, ya que también debería incluir una función de autenticación.

Haremos que la nueva ruta funcione de esta manera:

                      const userRouter = require('./routes/user')
app.use(userRouter)
                    

También eliminemos el enrutador de usuarios existente. Las rutas/users.js también se pueden eliminar.

                      $ npm start
                    

Con el comando anterior, puede iniciar su nueva aplicación.

Uso del terminal para enviar y recuperar datos

Vamos a crear un nuevo registro de base de datos a través del método de publicación:

                      $ curl -d 'name=Adam' https://localhost:3000/users
                    

Para recuperar los datos creados a través de la API, realice una solicitud HTTP GET:

                      $ curl https://localhost:3000/users
                    

La salida de la consola del curl El comando es una matriz JSON que contiene datos de todos los registros en la tabla Usuarios.

Nota: este no es realmente el resultado final habitual: una aplicación finalmente consume la API. La API generalmente también tendrá puntos finales para actualizar y eliminar datos.

Más automatización

Supongamos que querríamos crear una API que sirviera a muchas tablas. Es posible y muy útil generar automáticamente modelos para Sequelize desde nuestra base de datos. Sequelize-auto hará el trabajo pesado por nosotros. Los archivos resultantes (models.js) se colocarán e importarán dentro del directorio /models.

                      $ npm install sequelize-auto
                    

Se necesita un conector node.js para usar este y ya lo tenemos instalado para MariaDB.

Conclusión

Es posible desarrollar y ejecutar una API usando Fedora, Fedora MariaDB predeterminado, JavaScript y desarrolle de manera eficiente una solución como con una base de datos noSQL. Para aquellos acostumbrados a trabajar con MongoDB o una base de datos noSQL similar, Fedora y MariaDB son importantes habilitadores de código abierto.

Foto por Mazhar Zandsalimi en Unsplash .

Related Posts