No response using express proxy route
Even simpler with pipe
and request
-Package
var request = require('request');app.use('/api', function(req, res) { var url = apiUrl + req.url; req.pipe(request(url)).pipe(res);});
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);
Maybe your code is different when you're testing, but I'm querying the same URL as in your code sample using the following:
http://query.yahooapis.com:8080/v1/public/yql?q=show%20tables&format=json&callback=
and I get nothing back. My guess is you want to change port to 80 (from 8080) -- it works when I change it like so:
http://query.yahooapis.com:80/v1/public/yql?q=show%20tables&format=json&callback=
So that means it should be:
proxy.proxyRequest(req, res, { host: 'query.yahooapis.com', //yahoo is just an example to verify its not the apis fault port: 80});
Maybe I use http-proxy in a wrong way. Using restler does what I want:
var express = require('express'), app = express.createServer(), restler = require('restler');app.use(express.bodyParser());app.listen( 1234);app.get('/', function(req, res) { console.log(__dirname + '/index.html') 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) { restler.get('http://myUrl.com:80/app_test.php/api' + req.url, { }).on('complete', function (data) { console.log(data) res.json(data) });});