- 环境准备
首先需要安装Node.js和express模块,打开命令行工具执行以下命令:
npm install node
npm install express
- 安装express-http-proxy
执行以下命令安装express-http-proxy模块:
npm install express-http-proxy
- 添加代理服务
在express应用程序中添加代理服务。例如,我们可以将/api/代理到http://localhost:8080/:
const express = require('express');
const proxy = require('express-http-proxy');
const app = express();
app.use('/api', proxy('http://localhost:8080'));
app.listen(3000);
-
测试代理服务
在浏览器中访问http://localhost:3000/api/xxx,会自动将请求转发到http://localhost:8080/xxx。如果转发成功,则代理服务实现成功。 -
启用HTTPS
如果需要启用HTTPS服务,我们可以将上面的代码稍微修改一下:
const https = require('https');
const fs = require('fs');
const express = require('express');
const proxy = require('express-http-proxy');
const app = express();
const serverOptions = {
key: fs.readFileSync('key.pem'),
cert: fs.readFileSync('cert.pem')
};
app.use('/api', proxy('https://localhost:8080', {
https: {
key: fs.readFileSync('key.pem'),
cert: fs.readFileSync('cert.pem')
}
}));
https.createServer(serverOptions, app).listen(3000);
其中,key.pem和cert.pem是证书文件和私钥文件。
- 示例1:代理后端API
假设我们的网站需要调用第三方API,但这个API跨域访问无法实现,我们可以通过代理服务来解决。示例如下:
const express = require('express');
const proxy = require('express-http-proxy');
const app = express();
app.use('/api', proxy('https://api.thirdparty.com'));
app.listen(3000);
在浏览器中访问http://localhost:3000/api/xxx,代理服务会将请求转发到https://api.thirdparty.com/xxx。我们可以通过这个示例来了解如何使用代理服务访问第三方API。
- 示例2:跨域请求
假设我们的网站需要跨域请求另一个网站的API,我们可以使用代理服务来绕过跨域限制。示例如下:
const express = require('express');
const proxy = require('express-http-proxy');
const app = express();
app.use('/api', proxy('https://otherdomain.com'));
app.listen(3000);
在浏览器中访问http://localhost:3000/api/xxx,代理服务会将请求转发到https://otherdomain.com/xxx。我们可以通过这个示例来了解如何使用代理服务跨域访问其他网站的API。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Node 使用express-http-proxy 做api网关的实现 - Python技术站