如何在同一app.get函数中的res.redirect方法上传递req.setHeaders方法?

时间:2016-09-02 05:19:42

标签: javascript node.js express

var express = require('express');
var app = express();

var PORT = process.env.PORT;

app.get('/', function(req, res){
   res.json('Enter your query parameters for an image search like so: https://api.cognitive.microsoft.com/bing/v5.0/images/search?q=cats&count=10 and for the latest search results enter the url ttps://api.cognitive.microsoft.com/bing/v5.0/images/*'); 
});
  

这是app.get方法,我想获取用户输入的参数,然后将其重定向到bing api以返回图像搜索的搜索结果。大api需要将API密钥传递到头部,就像Ocp-Apim-Subscription-Key:••••••••••••••••••••••••• ••••••。   我该怎么做呢?

app.get('/imagesearch/:image*', function(req, res){
    console.log(req.params.image);
    console.log(req.query.count);
    res.redirect('https://api.cognitive.microsoft.com/bing/v5.0/images/search?q='+req.params.image+'&count='+req.query.count);
});

app.listen(PORT, function(){
   console.log('Express listening on: '+PORT); 
});

1 个答案:

答案 0 :(得分:3)

因为现在听起来你只是想从远程站点获取数据然后将其作为对原始请求的响应返回,所以你可以使用request module然后管道响应来实现这一点。作为对原始http请求的回复。

const request = require('request');

app.get('/imagesearch/:image*', function(req, res){
    let options = {
        url: 'https://api.cognitive.microsoft.com/bing/v5.0/images/search?q='+req.params.image+'&count='+req.query.count,
        headers: {"Ocp-Apim-Subscription-Key": "xxxxx"}
    };
    request(options).pipe(res);
});