Home

Awesome

Node + Express + superagent 转发 Api 请求

简单的几行代码实现如何通过Node + Express + superagent 转发 API 请求。已部署到 Heroku。

项目中用到了豆瓣电影 Api, 更多 Api请见 豆瓣Api文档

安装依赖

Node.js 转发请求用到了 expresssuperagent. superanget是一个 Node.js HTTP client。

npm install express superagent --save

端口设置

由于部署到 Heroku 时,端口是动态分配的,所以需要根据 process.env.NODE_ENV 动态设置端口:

app.set('port', (process.env.PORT || 5000));

如果不需要部署到 Heroku,端口可直接写死。 定义接口

根据前端所需,定义了如下三个接口:

app.get('/movie/:type', function (req, res) {
  var sreq = request.get(HOST + req.originalUrl)
  sreq.pipe(res);
  sreq.on('end', function (error, res) {
    console.log('end');
  });
})

app.get('/movie/subject/:id', function (req, res) {
  var sreq = request.get(HOST + req.originalUrl)
  sreq.pipe(res);
  sreq.on('end', function (error, res) {
    console.log('end');
  });
})

app.get('/movie/search', function (req, res) {
  var sreq = request.get(HOST + req.originalUrl)
  sreq.pipe(res);
  sreq.on('end', function (error, res) {
    console.log('end');
  });
})

CORS设置

跨源资源共享 ( CORS )机制让Web应用服务器能支持跨站访问控制,从而使得安全地进行跨站数据传输成为可能。 主要是通过设置Access-Control-Allow-Origin: *

app.all('*', function (req, res, next) {
  if (!req.get('Origin')) return next();
  // use "*" here to accept any origin
  res.set('Access-Control-Allow-Origin', '*');
  res.set('Access-Control-Allow-Methods', 'GET');
  res.set('Access-Control-Allow-Headers', 'X-Requested-With, Content-Type');
  // res.set('Access-Control-Allow-Max-Age', 3600);
  if ('OPTIONS' == req.method) return res.send(200);
  next();
});

端口监听

app.listen(app.get('port'), function() {
  console.log('Node app is running on port', app.get('port'));
});

启动

cd node-proxy
node index.js

具体见node-proxy/index.js

部署到Heroku

详情见: 官方 Getting Started