通过NodeJS调用远程API并将结果附加到我的API失败

时间:2017-07-24 06:34:00

标签: node.js api

我正在尝试从CA API调用API,该API以p7b格式将证书文件作为附件返回。我需要将相同的内容附加到我的API并返回给我的客户端。我是NodeJS的新手,我无法让这个工作。有人可以帮忙吗?

我试过res.pipe(),但是没用。我在下面给出了我的代码片段。

app.get("/api/certificate/:certificateid", function (req, res) {         
        var certificateId = req.params.certificateid;
        var header = {
            "X-DC-DEVKEY": apiKey,
            "Content-Type": "application/json"
        };
        var options = {
            host: certUrl,
            port: 443,
            method: 'GET',
            path: 'xxxxx/certificate/' + certificateId + '/download/format/p7b',
            headers: header
        };
       https.request(options, function (res1) {
         //   res1.setEncoding('gzip');   DID NOT WORK             
            res1.on('data', function (data) {
                var result = JSON.stringify(data);
                console.log(result);                   
                res.setHeader('Content-type', 'application/x-pkcs7-certificates');
                res.setHeader('Content-Encoding', 'gzip');
                res.setHeader('Content-Disposition', 'filename=blockwaveinsurance_com.p7b');
                res.end(data,'gzip');
            });

        }).end();
    });

1 个答案:

答案 0 :(得分:0)

出于某种原因,https不能让我通过管道或任何其他方式将附件从远程api重新发送到我的api,但我能够通过请求模块来完成。如果有人需要,这是代码

var certUrl='www.xxxx.com';

var apiKey='xxxxx';

 app.get("/api/certificate/:certificateid", function (req, res) 
{

            var certificateId = req.params.certificateid;

            var url=certUrl+"/services/v2/certificate/" + certificateId + "/download/format/p7b"; 

            var options = {
                url: url,
                headers: {
                    "X-DC-DEVKEY": apiKey,
                }
            };

            function callback(error, response, body) {

                if (!error && response.statusCode == 200) {

                    console.log('no error');

                }
            }

            request(options, callback).pipe(res);
        });