在我的场景中,我需要转发请求到另一个终点.在我的机器上有两个服务器php和node.js服务器.Node.js就像一个"中间人",PHP服务器必须以同样的方式工作.
Node.js服务器代码
var express = require('express');
var fs = require('fs');
var path = require('path');
var http = require('http');
var https = require('https');
var app = express();
var HTTP_PORT = 3000;
// Create an HTTP service
http.createServer(app).listen(HTTP_PORT,function() {
console.log('Listening HTTP on port ' + HTTP_PORT);
});
//endpoint for tracking
app.get('/track', function(req, res) {
sendRequestToOtherEndPoint(req);
processRequest(req);
res.setHeader('Content-Type', 'application/json');
res.send('Req OK');
});
function processRequest(req){
console.log("request processed");
}
function sendRequestToOtherEndPoint(req){
//magic here :)
}
Run Code Online (Sandbox Code Playgroud)
当此服务器在端口3000中收到get请求时,它处理请求信息,并且必须将相同的请求转发到另一个端点.
例如:
kma*_*dov 12
根据您要执行的操作,您可以为终点创建新请求:
//endpoint for tracking
app.get('/track', function(req, res) {
req.get({url: 'http://end-point', headers: req.headers});
processRequest(req);
res.setHeader('Content-Type', 'application/json');
res.send('Req OK');
});
Run Code Online (Sandbox Code Playgroud)
更多信息:https://github.com/request/request
有几个有用的库可以使用:
http-proxy-middleware:
const proxy = require('http-proxy-middleware')
var apiProxy = proxy('/track', {target: 'http://end-point'});
app.use(apiProxy)
Run Code Online (Sandbox Code Playgroud)
axios-express-proxy
import express from 'express';
import { Proxy } from 'axios-express-proxy';
const app = express();
const port = 3000;
app.get('/track', (req, res) => Proxy('http://end-point', req, res));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
26113 次 |
| 最近记录: |