如何构建一个node.js代理服务器

如何构建一个node.js代理服务器

在本文中,我们将创建一个Node.js代理服务器,将请求转发到不同的服务器或端点。

代理服务器: 代理服务器充当用户和他们想要访问的网站或API之间的中介。

为什么使用代理服务器?

在标准的方法中,客户端直接发送请求到API端点来获取所需数据。在这种情况下,Node.js代理将充当用户和API之间的中介。因此,用户向代理发出请求,然后将其转发到API端点。用户请求代理端点。

使用代理的好处包括:

  • 允许和限制API的某些资源。
  • 提高网络性能。
  • 负载均衡。

示例: 让我们构建一个Node.js代理服务器。

先决条件: 确保你的设备上安装了以下应用程序。

  • Node.js(请安装)。
  • Visual Studio Code或其他代码编辑器。
  • Postman用于测试API请求。

步骤: 我们将使用http-proxy-middleware框架创建一个发送请求到天气API – Open Weather Map的Node.js代理。

步骤1:初始化npm

创建一个新的项目目录并进入终端。键入以下命令初始化npm。

npm init -y

如何构建一个node.js代理服务器

步骤2:安装所需的依赖项

我们需要在我们的项目中安装一些列出的软件包,如下所示:

  • express: 这是一个node.js框架。
  • http-proxy-middleware: 这是一个代理框架。
  • dotenv: 加载环境变量。
  • morgan: 记录请求。

通过运行以下命令来安装上述软件包:

npm i express http-proxy-middleware dotenv morgan

如何构建一个node.js代理服务器

步骤3:创建代理服务器

创建一个app.js文件,并编写代理服务器的代码。

首先,我们将导入安装的包到我们的项目中,并创建一个express服务器。

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

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

要使用开放天气地图API,您需要一个API密钥。请访问https://openweathermap.org/api登录或创建新帐户。点击API密钥,将其复制。

如何构建一个node.js代理服务器

我们将创建一个 .env文件 来存储这个API密钥及其URL。在.env文件中添加以下代码

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

然后,我们将提及我们的端口、主机和API URL。

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}`;

代理逻辑: 我们将创建一个代理中间件,并指定API终点和用户用于获取数据的新路径。默认情况下,我们将获取伦敦的天气。

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

API_SERVICE_URL将对用户隐藏,他们只能从localhost:3000/weather请求天气。在幕后,路径将重写为localhost:3000/

配置服务器

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

将以下代码添加到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}`); 
});

启动应用程序的步骤: 使用以下命令运行应用程序:

node app.js 

输出:

如何构建一个node.js代理服务器

现在您已经准备好使用代理服务器了。

步骤4: 前往 Postman 发送请求。

我们将发送一个请求到 localhost:3000/weather,并根据 URL 查询获取伦敦的天气数据。用户甚至不知道确切的 API 端点。用户发送请求到代理服务器,代理服务器将其转发到 API 端点。

输出:

如何构建一个node.js代理服务器

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程