Andreas Köberle Andreas Köberle - 1 year ago 89
Node.js Question

No response using express proxy route

I've written a small proxy with nodejs, express and htt-proxy. It works well for serving local files but fails when it comes to proxy to external api:

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

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: '', //yahoo is just an example to verify its not the apis fault
port: 8080


The problem is that there is no response from the yahoo api, maybe there is an response but i dont came up in the browser.

Answer Source

Even simpler with pipe and request-Package

var request = require('request');

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

It pipes the whole request to the API and pipes the response back to the requestor. This also handles POST/PUT/DELETE and all other requests \o/

If you also care about query string you should pipe it as well

req.pipe(request({ qs:req.query, uri: url })).pipe(res);
Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download