Cómo crear una API RESTful de Node.js usando Express.js en Ubuntu 16.04 LTS

En este tutorial, aprenderá cómo configurar una API RESTful completa, que atenderá las solicitudes HTTP utilizando Node.js y Express, mientras que el proxy inverso con NGINX, en Ubuntu 16.04 LTS. Utilizaremos una aplicación llamada Cartero, una herramienta de desarrollo de API muy conocida, para probar nuestra API y asegurarse de que sea completamente funcional y funcione correctamente. Node.js es un marco JavaScript multiplataforma rápido basado en el motor V8 de Chrome. Se utiliza tanto en aplicaciones de escritorio como de servidor y es famoso por su manejo de bucles de eventos de subproceso único. Utilizaremos Node.js como back-end para nuestra API RESTful, incluida con Express.js, nuestro marco de aplicaciones web creado para Node.js. Express.js se lanza como software libre y abierto. Express está del lado del servidor, escrito en JavaScript, y está diseñado para crear API, lo que lo hace perfecto para nuestro proyecto. Por otro lado, Postman es un cliente HTTP muy poderoso, con el desarrollo de API en mente. Cuenta con todas las herramientas que posiblemente pueda desear para el desarrollo de API.

Instalación de cartero

Primero, desea dirigirse al sitio web de Postman y descargar e instalar Postman para su PC principal (no su servidor). Todas las instrucciones de instalación estarán en su sitio web.

Instalando Node.js

Para comenzar, primero tendremos que instalar Node.js para que podamos comenzar a desarrollar nuestra API. Vamos a descargar e instalar Node.js desde el sitio web oficial.

 curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
 sudo apt-get install -y nodejs

Además, también querrá obtener las herramientas de compilación necesarias, que serán útiles para compilar módulos.

sudo apt-get install build-essential

Para este tutorial, utilizaremos la versión LTS de Node.js, que es la versión 8.9.3.

Inicializando nuestro proyecto Node.js

Tendremos que inicializar un nuevo proyecto Node.js, que contendrá una aplicación. Para hacer eso, cree un nuevo directorio.

 mkdir expressapi 

Cambiar al nuevo directorio. Una vez dentro, ejecuta npm inity completa todas las indicaciones requeridas. Tenga en cuenta el "punto de entrada" de su aplicación: más adelante creará este archivo. Una vez que haya terminado, verá un package.jsonarchivo en su directorio actual. Actúa como una descripción de nuestro proyecto y enumera todas las dependencias necesarias para funcionar.

Configurando Express.js

Ahora configuraremos Express.js y sus dependencias.

npm install express

El proceso de instalación comenzará. Tomará unos minutos para que todo termine de descargarse.

Iniciando nuestro archivo principal

A continuación, crearemos nuestro archivo de inicio principal para nuestra API. Aquí es donde usará el "punto de entrada" que vio en el package.jsonarchivo. Por el bien de este tutorial, voy a utilizar el nombre predeterminado de esquema, index.js.

touch index.js

Luego, ábralo en el editor de nano texto.

nano index.js

En nuestro archivo principal, primero queremos llamar a todos nuestros paquetes principales y registrar nuestras rutas.

var express = require('express');        
var app = express();                 
var bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
var port = process.env.PORT || 8080;  
const router = express.Router();
router.get('/', function(req, res) {
    res.json({ message: 'API is Online!' });   
});

app.use('/api', router);
app.listen(port);
console.log('Listening on port ' + port);

Básicamente, lo que estamos haciendo aquí es inicializar nuestra aplicación y configurar un enrutador básico para nuestra API. Tenga en cuenta que configuramos el puerto de nuestra aplicación en 8080. Necesitaremos este número para cuando configuremos nuestra API RESTful. Ahora estamos listos para seguir adelante y probar nuestra API.

Probar nuestra API con Postman

En el directorio del proyecto, ejecute lo siguiente.

node <filename>.js

Esto iniciará la API, donde <filename>está el archivo de inicio que especificó en el package.jsonarchivo. Luego, abra Postman en su PC / Mac y haga clic en el botón " New" en la esquina superior derecha, luego haga clic en " Request". Cuando esté allí, debería ver una barra que dice " GET" al lado. Aquí ingresaremos nuestra URL de solicitud. Simplemente ingrese lo siguiente en la sección URL de solicitud y haga clic en " Send".

`http://your-server-ip:3000/api` 

Verás " 'API is online'".

Rutas API

Para manejar rutas, utilizaremos el enrutador Express. Si no sabe qué es un enrutador, es esencialmente cómo responden los puntos finales de la aplicación a las solicitudes de los clientes. Estas son las rutas que estableceremos como ejemplo:

  • /api/numbers - Muestra todos los números del 1 al 10.

  • /api/letters - Muestra todas las letras de AZ.

Ahora configuraremos nuestra primera estructura de middleware de ruta, así.

router.use(function(req, res, next) {
   console.log('We've got something.');
   next() //calls next middleware in the application.
});

router.route('/numbers/:number').get((req, res) => {
     res.json({result: req.params.number + 1})
});

En este ejemplo, configuramos una situación en la que un usuario puede solicitar la suma de un número + 1 proporcionando la forma de la palabra, utilizando el método GET. Usamos la router.route()función para señalar qué número queremos devolver como resultado. Los parámetros se nombran con un " :" delante de ellos. Accedemos a estos parámetros a través de req.params.

Aquí hay un ejemplo con letras.

   router.route('/letters/:letter').get((req, res) => {
     res.json({result: req.params.letter.toUpperCase()})
});

Utilizamos el mismo método que el anterior, pero enviamos la carta como mayúscula.

Introducción a NGINX

NGINX es un conocido software de código abierto utilizado para servicio web, servidores proxy inversos, transmisión y más. Utilizaremos NGINX para revertir el proxy de nuestra API, para permitirnos ejecutarlo en el puerto 80, porque Node.js no permite conexiones en puertos inferiores a 1024 sin acceso a la raíz. Esto puede ser útil al vincular su dominio a su servidor.

Configurando NGINX

Para comenzar a instalar NGINX, deberá ejecutar lo siguiente en su terminal y esperar a que se complete la instalación.

sudo apt-get install nginx

A continuación, vamos a querer crear nuestro archivo de sitio que NGINX utilizará para revertir el proxy de nuestra aplicación.

sudo nano /etc/nginx/sites-available-api.js

Rellene el archivo con lo siguiente, luego CTRL+ Opara guardarlo.

server {
          listen 80;
          location / {
                proxy_set_header X-Real-IP 
                $remote_addr;
                proxy_set_header 
                X-Forwarded-For 
                $proxy_add_x_forwarded_for;
                proxy_set_header Host 
                $http_host;
                proxy_set_header 
                X-NginX-Proxy true; proxy_pass 
                http://127.0.0.1:8080/;
                proxy_redirect off;
                proxy_http_version 1.1;
                proxy_set_header Upgrade 
                $http_upgrade;
                proxy_set_header Connection 
                "upgrade";
                proxy_redirect off;
                proxy_set_header 
               X-Forwarded-Proto $scheme;
       }
}

Usando el mismo puerto en el que ejecutamos nuestra aplicación anteriormente, le estamos diciendo a Nginx que redirija todas las solicitudes desde nuestra dirección IP en el puerto 80a nuestra API que se ejecuta en el puerto 8080.

A continuación, habilite el proxy inverso al vincular nuestro archivo recién creado a la sites-availablecarpeta:

sudo ln -s /etc/nginx/sites-available/api /etc/nginx/sites-available

Esto asegurará que NGINX revierta el proxy de nuestra API.

Primera ejecución con NGINX

Una vez que hayamos terminado nuestra configuración de NGINX, iniciaremos NGINX, luego iniciaremos nuestra API. Primero, reinicie NGINX.

sudo systemctl restart nginx

Luego, vuelva a cambiar a su directorio API e inícielo.

node <filename>.js

La aplicación se ejecutará en el puerto 80. Simplemente ejecute la prueba desde arriba con Postman, para asegurarse de que todo funcione correctamente.

Manteniendo nuestra API funcionando

En un entorno de producción, debe asegurarse de tener un administrador de procesos para sus aplicaciones Node, para asegurarse de que se ejecuten para siempre en segundo plano. En este tutorial, utilizaremos un administrador de procesos llamado PM2 (Process Manager 2), que es un administrador de procesos para aplicaciones Node.js que los mantendrá vivos para siempre con un tiempo de inactividad mínimo. PM2 viene con muchas herramientas de administración útiles, como detener, recargar, pausar y más. Para instalar PM2, escriba lo siguiente y espere a que se instale.

sudo npm install pm2 -g

Una vez que está instalado, todo lo que tiene que hacer es asegurarse de estar en el directorio del proyecto, escriba lo siguiente y se iniciará la aplicación.

pm2 start <filename>.js

Administrando nuestra aplicación con PM2

Como se mencionó anteriormente, PM2 tiene algunas herramientas útiles que puede usar para administrar mejor su aplicación.

  • pm2 stop- Como su nombre lo indica, esto le permite detener la aplicación actualmente en ejecución y eliminar su proceso. Si su aplicación está produciendo un resultado inesperado, entonces detenerlo será útil.

  • pm2 list- La función de lista le permite ver todas las aplicaciones actualmente en ejecución a través de PM2, asignadas por sus nombres. Si necesita verificar rápidamente el tiempo de actividad de su aplicación, debe usar esta herramienta.

  • pm2 restart- Si su aplicación se congela por alguna razón, y desea volver a cargarla, pm2 restart hace exactamente eso. Eliminará el proceso de solicitud y lo iniciará nuevamente, bajo un proceso diferente.

  • pm2 monit- La herramienta de monitor incorporada de PM2 le permite ver un gráfico de los detalles específicos de su aplicación, como el uso de CPU / RAM, en un gráfico de estilo ncurses fácil de usar. Esto es útil si desea una imagen visual de la carga de su aplicación.

Observaciones finales

Ahora hemos completado nuestra tarea de crear una API RESTful, utilizando Node.js, Express y el proxy inverso con NGINX. Siéntase libre de ampliar este tutorial. Puede hacer muchas cosas excelentes con su nueva API, como agregar métodos de autenticación, una base de datos, una mejor ruta y manejo de errores, y mucho, mucho más. Si tiene un dominio, con un registro "A" ya configurado en su dirección IP, podrá acceder a su API desde su dominio. Si desea obtener más información sobre Express.js, visite su sitio web en http://expressjs.com . Para obtener más información sobre NGINX y el proxy inverso, visite http://nginx.com . Para leer más sobre PM2, visite su página en http://pm2.keymetrics.io .



Leave a Comment

¿Puede la IA luchar con un número cada vez mayor de ataques de ransomware?

¿Puede la IA luchar con un número cada vez mayor de ataques de ransomware?

Los ataques de ransomware van en aumento, pero ¿puede la IA ayudar a lidiar con el último virus informático? ¿Es la IA la respuesta? Lea aquí, sepa que la IA es una bendición o una perdición

ReactOS: ¿Es este el futuro de Windows?

ReactOS: ¿Es este el futuro de Windows?

ReactOS, un sistema operativo de código abierto y gratuito, está aquí con la última versión. ¿Puede satisfacer las necesidades de los usuarios de Windows de hoy en día y acabar con Microsoft? Averigüemos más sobre este estilo antiguo, pero una experiencia de sistema operativo más nueva.

Manténgase conectado a través de la aplicación de escritorio WhatsApp 24 * 7

Manténgase conectado a través de la aplicación de escritorio WhatsApp 24 * 7

Whatsapp finalmente lanzó la aplicación de escritorio para usuarios de Mac y Windows. Ahora puede acceder a Whatsapp desde Windows o Mac fácilmente. Disponible para Windows 8+ y Mac OS 10.9+

¿Cómo puede la IA llevar la automatización de procesos al siguiente nivel?

¿Cómo puede la IA llevar la automatización de procesos al siguiente nivel?

Lea esto para saber cómo la Inteligencia Artificial se está volviendo popular entre las empresas de pequeña escala y cómo está aumentando las probabilidades de hacerlas crecer y dar ventaja a sus competidores.

La actualización complementaria de macOS Catalina 10.15.4 está causando más problemas que resolver

La actualización complementaria de macOS Catalina 10.15.4 está causando más problemas que resolver

Recientemente, Apple lanzó macOS Catalina 10.15.4, una actualización complementaria para solucionar problemas, pero parece que la actualización está causando más problemas que conducen al bloqueo de las máquinas Mac. Lee este artículo para obtener más información

13 Herramientas comerciales de extracción de datos de Big Data

13 Herramientas comerciales de extracción de datos de Big Data

13 Herramientas comerciales de extracción de datos de Big Data

¿Qué es un sistema de archivos de diario y cómo funciona?

¿Qué es un sistema de archivos de diario y cómo funciona?

Nuestra computadora almacena todos los datos de una manera organizada conocida como sistema de archivos de diario. Es un método eficiente que permite a la computadora buscar y mostrar archivos tan pronto como presiona buscar.

Singularidad tecnológica: ¿un futuro lejano de la civilización humana?

Singularidad tecnológica: ¿un futuro lejano de la civilización humana?

A medida que la ciencia evoluciona a un ritmo rápido, asumiendo muchos de nuestros esfuerzos, también aumentan los riesgos de someternos a una singularidad inexplicable. Lea, lo que la singularidad podría significar para nosotros.

Una mirada a 26 técnicas analíticas de Big Data: Parte 1

Una mirada a 26 técnicas analíticas de Big Data: Parte 1

Una mirada a 26 técnicas analíticas de Big Data: Parte 1

El impacto de la inteligencia artificial en la atención médica 2021

El impacto de la inteligencia artificial en la atención médica 2021

La IA en la salud ha dado grandes pasos desde las últimas décadas. Por tanto, el futuro de la IA en el sector sanitario sigue creciendo día a día.