ある API を使って js で single page app を実装しようかなと思ったら、 CORS や jsonp に対応していなくて残念だったので、 node.js で proxy っぽいものを実装してみました。
クライアント js から外部の API へアクセスするときはこんな感じ。
$.get("/proxy?url=" + encodeURIComponent(apiUrl), function(result) {
// Do somthing with the result.
});
アプリケーション本体の html, js など静的リソースは /app
以下に配置です。
proxy.js
var http = require('http');
var request = require('request');
var express = require('express');
var app = express();
app.get('/proxy', function(req, res) {
var url = req.query.url;
var x = request(url);
req.pipe(x);
x.pipe(res);
});
app.use('/', express.static('app'));
var server = app.listen(8000, function(a) {
console.log(a);
console.log(server.address());
});