当前位置: 首页 > 面试题库 >

如何将请求转发到node.js中的其他端点

松和泰
2023-03-14
问题内容

在我的情况下,我需要转发到另一个端点的请求。在我的机器中,有两个服务器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 :)
}

当此服务器在端口3000中收到获取请求时,它将处理请求信息,并且必须将同一请求转发到另一个端点。

例如:

  1. 获取localhost:3000 / track?param1 = 1&param2 = 2
  2. 服务器进程获取请求
  3. 服务器将获取请求转发到localhost / final-endpoint?param1 = 1&param2 = 2

问题答案:

根据您要执行的操作,可以向端点创建一个新请求:

//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');
});

更多信息:https://github.com/request/request



 类似资料:
  • 问题内容: 在春季将请求转发到其他控制器的正确方法是什么? 所有的控制器都有Spring注入的依赖项,所以我不能只创建它们并自己调用它们,而是希望将请求属性传递给其他控制器。 问题答案: 尝试返回一个String,而该String为正向URL。

  • 问题内容: 我已经在工作,但是当我尝试从其他模块调用它时,是否会不确定? app.js Consumer.js 问题答案: 由于app.js通常是应用程序中的主要初始化模块,因此通常会同时初始化Web服务器和socket.io并加载应用程序所需的其他内容。 因此,与其他模块共享的一种典型方法是将它们传递给该模块的构造函数中的其他模块。那会像这样工作: 然后,在consumer.js中: 或者,如果

  • 我使用的是spring boot微服务。我已经配置了eureka、zuul代理和另一个微服务(帐户)。如果我直接从账户上打电话,效果很好。帐户和zuul服务器都显示在eureka上。 当我尝试使用zuul代理命中它得到状态代码但没有得到任何结果 下面是我对zuul的配置 控制台日志到目前为止 路由匹配=ZuulRoute{id='account',path='/account/**',servic

  • 问题内容: 我需要向运行守护程序的端口8080发送AJAX请求。 问题答案: 您不能跨域,子域或端口号信息。但是,如果您可以同时访问守护程序 和 请求站点,则可以使用JSONP 。如果需要返回数据,则需要支持查询参数并以正确的格式返回它。 将信息传递给守护程序: 现在,只需确保您的守护程序可以处理该参数。例如,如果守护程序的返回(唯一写入页面的内容)应如下所示: 对于键/值对: 对于数组: 如果没

  • 冒充客户 客户端的控制器 } 编辑3:我添加了功能区 我的服务应用程序和我的api是使用虚假客户机。不幸的是,我仍然有同样的问题。我已经刷新和重建了一切。 编辑4:我已经为这个问题创建了一个GitHub项目。 输入输入模块使用输入格式和输入解析模块作为假客户机来验证输入字符串的长度和解析/打印项。我一直使用字母表作为输入,所以输入参数的最小长度设置为26。input-format在端口8080上运

  • 我有邮递员要求W/C工作良好。 当我单击Send按钮时,它工作得很好,它返回正确的资源,然而,当我试图在PHP中使用GuzzleHTTP/Guzzle时,它返回422或400 我的代码 但返回422 致命错误:未捕获的GUZZLEHTTP\Exception\ClientException:客户端错误:导致响应:{“status”:422,“title”:“缺少或不正确的必需字段”,“type”: