¿Cómo construir un servidor proxy node.js?

En este artículo, crearemos un proxy  Node.js que reenvía requests a diferentes servidores o puntos finales.

Servidor proxy: los servidores proxy actúan como intermediarios entre el usuario final y el sitio web o la API a la que desean acceder.

¿Por qué servidor proxy? 

En el método estándar, el cliente envía una solicitud directamente al extremo de la API para obtener los datos deseados. En este caso, el proxy node.js actuará como intermediario entre el usuario y la API. Por lo tanto, el usuario realiza una solicitud al proxy, que luego se reenvía al punto final de la API. El usuario solicita al punto final del proxy.

Los beneficios de usar un proxy son:

  • Permitir y restringir ciertos recursos de la API.
  • Mejora el rendimiento de la red.
  • Balanceo de carga.

Ejemplo: Construyamos un servidor proxy node.js.

Requisitos previos: asegúrese de tener las siguientes aplicaciones en su dispositivo.

  • Node.js ( instalar ).
  • Código de Visual Studio o cualquier otro editor de código.
  • Cartero para probar las requests de API.

Enfoque: Construiremos un proxy node.js para enviar requests a una API meteorológica: abra el mapa meteorológico utilizando el marco http-proxy-middleware. 

Paso 1: inicializar npm 

Cree un nuevo directorio de proyectos y diríjase a la terminal. Escriba el siguiente comando para inicializar npm.

npm init -y

Inicializando npm 

Paso 2: Instala las dependencias requeridas

Necesitamos algunos paquetes en nuestro proyecto que se enumeran a continuación:

  • express: es un marco node.js.
  • http-proxy-middleware: es un marco de proxy.
  • dotenv: Carga variables de entorno.
  • morgan: Registra las requests.

Instale los paquetes anteriores ejecutando el siguiente comando: 

npm i express http-proxy-middleware dotenv morgan

Instalando paquetes 

Paso 3: Crear un servidor proxy 

Cree un archivo app.js y escriba el código para el servidor proxy. 

Primero, importaremos los paquetes instalados a nuestro proyecto y crearemos un servidor express.

const express = require('express');
const morgan = require("morgan");
const { createProxyMiddleware } = require('http-proxy-middleware');
require('dotenv').config()

// Creating express server
const app = express();

Para usar la API abierta del mapa meteorológico, necesita una clave API. Vaya a https://openweathermap.org/api, inicie sesión o cree una nueva cuenta. Haga clic en claves API y copie la clave.

Obtener una clave API en Open Weather Map API 

Crearemos un archivo .env para almacenar esta clave API y su URL. Agregue el siguiente código en el archivo .env

API_BASE_URL = "https://api.openweathermap.org/data/2.5/weather"
API_KEY_VALUE = "<Enter your API key>"

Luego, mencionaremos nuestro puerto, host y URL de API.

const PORT = 3000;
const HOST = "localhost";
const API_BASE_URL = process.env.API_BASE_URL;
const API_KEY_VALUE = process.env.API_KEY_VALUE;

const API_SERVICE_URL = `${API_BASE_URL}?q=London&appid=${API_KEY_VALUE}`;

La lógica del proxy: crearemos un middleware de proxy y especificaremos el punto final de la API y la nueva ruta que el usuario usará para obtener datos. Por defecto, recuperaremos el clima de Londres. 

app.use('/weather', createProxyMiddleware({
    target: API_SERVICE_URL,
    changeOrigin: true,
    pathRewrite: {
        [`^/weather`]: '',
    },
}));

API_SERVICE_URL se ocultará para el usuario, y solo podrá solicitar el clima de localhost: 3000/weather. Detrás de escena, la ruta se reescribirá en localhost:3000/<API_SERVICE_URL>. 

Configurar el servidor 

// Start Proxy
app.listen(PORT, HOST, () => {
    console.log(`Starting Proxy at ${HOST}:${PORT}`);
});

Agregue el siguiente código al archivo app.js.

app.js

const express = require("express");
const morgan = require("morgan");
const { createProxyMiddleware } = require("http-proxy-middleware");
require("dotenv").config();
  
// Create Express Server
const app = express();
  
// Configuration
const PORT = 3000;
const HOST = "localhost";
const { API_BASE_URL } = process.env;
const { API_KEY_VALUE } = process.env;
const API_SERVICE_URL = `${API_BASE_URL}?q=London&appid=${API_KEY_VALUE}`;
  
// Logging the requests
app.use(morgan("dev"));
  
// Proxy Logic :  Proxy endpoints
app.use(
    "/weather",
    createProxyMiddleware({
        target: API_SERVICE_URL,
        changeOrigin: true,
        pathRewrite: {
            "^/weather": "",
        },
    })
);
  
// Starting our Proxy server
app.listen(PORT, HOST, () => {
    console.log(`Starting Proxy at ${HOST}:${PORT}`);
});

Paso para iniciar la aplicación: Ejecute la aplicación usando el siguiente comando:

node app.js 

Producción: 

Creando el servidor proxy

Ahora está listo para usar su servidor proxy. 

Paso 4: Vaya a Postman para enviar requests.

Enviaremos una solicitud a localhost:3000/weather y obtendremos datos meteorológicos para Londres, como se especifica en la consulta de URL. El usuario ni siquiera conoce el punto final exacto de la API. El usuario envía una solicitud al servidor proxy y el servidor proxy la reenvía al extremo de la API. 

Producción:

Enviando solicitud para obtener datos meteorológicos 

Publicación traducida automáticamente

Artículo escrito por riyaa7vermaa y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *