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

使用快速代理路由无响应

杨建章
2023-03-14
问题内容

我用nodejs,express和htt-proxy编写了一个小型代理。它适用于提供本地文件,但在代理外部api时失败:

var express = require('express'),
    app = express.createServer(),
    httpProxy = require('http-proxy');


app.use(express.bodyParser());
app.listen(process.env.PORT || 1235);

var proxy = new httpProxy.RoutingProxy();

app.get('/', function(req, res) {
    res.sendfile(__dirname + '/index.html');
});
app.get('/js/*', function(req, res) {
    res.sendfile(__dirname + req.url);
});
app.get('/css/*', function(req, res) {
    res.sendfile(__dirname + req.url);
});

app.all('/*', function(req, res) {
    req.url = 'v1/public/yql?q=show%20tables&format=json&callback=';
    proxy.proxyRequest(req, res, {
        host: 'query.yahooapis.com', //yahoo is just an example to verify its not the apis fault
        port: 8080
    });

});

问题是yahoo api没有响应,也许有响应,但我没有出现在浏览器中。


问题答案:

piperequest-Package 甚至更简单

var request = require('request');

app.use('/api', function(req, res) {
  var url = apiUrl + req.url;
  req.pipe(request(url)).pipe(res);
});

它将整个请求传递给API,并将响应传递回请求者。这也处理POST / PUT / DELETE和所有其他请求\ o /

如果您还关心查询字符串,则也应使用管道

req.pipe(request({ qs:req.query, uri: url })).pipe(res);


 类似资料:
  • 问题内容: 我正在尝试将Socket.io与Node.js结合使用,并在路由逻辑内发送到套接字。 我有一个相当标准的Express 3安装程序,其中的server.js文件位于该路由中,然后我的index.js位于一个routes文件夹中,该文件夹导出站点的所有页面/公共可访问功能。因此,它们看起来像: 在server.js中定义的路由如下: 我假设我必须在server.js中创建socket.i

  • 问题内容: 我在Socket.io中使用Express,但我不知道如何在Express路由中使用SocKet.io。 我最终在“ app.js”中这样做 我该如何定义到“ / cmp”的路由,并在其中传递var“ io”? 这样,在“ /routes/cmp.js”中,我可以执行以下操作: 一些线索? 问题答案: 高阶函数呢? 然后 作为另一种选择,有时我会将路线的格式设置为以下格式: 然后定义为

  • 我正在考虑将Socket.io集成到一个express应用程序中。 js有一个非常好的特性,可以通过socket.io消息调用快速路由。 不过,帆在其他方面比我需要的要多一点。我正在寻找一种方法,使socket.io请求转发到快速路由,而不必使用整个sails框架。我想这是一个很常见的需求,所以我很惊讶我没有找到一个npm模块来做这件事,但是找了很长时间,我什么也没有找到。Express.io会这

  • 我们将结束数据结构和算法的部分,并将数据结构用于实际问题。我已经写了几个 Web 服务器,一个不断出现的问题是,将 URL 路径匹配到“动作”。你会在每个 Web 框架,Web 服务器,和必须基于层次化的键来“路由”信息的任何东西中发现此问题。当你的 Web 服务器收到URL /do/this/stuff/时,必须确定每个部分是否可能附加了某种操作或配置。如果你在/do/配置了 Web 应用程序,

  • 我刚开始学习React,在Asp.NETMVC中实现React浏览器路由器在页面之间导航时遇到了困难。 我使用了相同的结构,没有应用反应asp.netMVC,它工作正常。 当我点击链接时,它不会产生任何错误,只是在页面甚至网络活动中没有任何变化。 我用MVC应用的代码如下: --index.js-- --App.js-- --Nav.app.js-- --routingComponent.js--

  • 我们在前面的一小节介绍了一个简单的 Flask 程序是怎么运行的。其中,有三行代码,我们并没有深入讲解。在这里,我们就对它们进行深入解析。回顾这三行代码: @app.route("/") def hello(): return "Hello World!" 这三行代码的意思就是:如果浏览器要访问服务器程序的根地址(”/“),那么 Flask 程序实例就会执行函数 hello() ,返回『H