【问题标题】:nodejs api does not forward response which received from another servicenodejs api不转发从另一个服务收到的响应
【发布时间】:2019-02-21 16:29:19
【问题描述】:

我开发了一个 nodejs api 来监听 http 请求,然后添加一些标头值并将其转发到不同服务器中的另一个 Restful 服务。当响应返回时,我会将相同的响应转发给请求者而不做任何修改。所以基本上这个 api 将作为转发代理工作。

我使用下面的代码将响应转发给请求者,它返回数据但是我们的一个响应包含一个附件(pdf 文件),该附件将始终作为空文件/损坏的文件接收给请求者。有人可以帮我解决这个问题吗?

app.use('/', function(req, res, next){

    var request = require('request');

    var url={{someurl}} 

    var option = {
        method:req.method,
        json:data,
        headers:{
           "Content-Type": "application/json",
           "Cookie":result
        };
    };
    request(URL, option, function (error, response, body) {   

        if (error) {
            res.status("500").send(error);
            res.end(err);
        }else{            
            if (req.method=='GET'){
                res.set(response.headers);
            }

            res.status(response.statusCode).send(body);
            res.end(response);
        }
    })
  });

【问题讨论】:

    标签: node.js express request httprequest response


    【解决方案1】:

    快递

    const express = require('express');
    let router = express.Router();
    router.get('/{{someurl}}', (req,res)=>{
      // do your work
      res.send({{any response}});
    });
    

    【讨论】:

    • 这个服务的目的是监听http请求,并在添加几个header后转发到不同的URL。所以基本上我的服务中不能有路由。
    【解决方案2】:

    我找到了这个问题的解决方案。在选项中我必须添加编码:null,否则正文将转换为字符串。当正文转换为字符串时,文件将被损坏。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-26
      • 2014-02-13
      • 2015-04-17
      • 1970-01-01
      • 2021-10-14
      • 1970-01-01
      • 2018-04-25
      • 1970-01-01
      相关资源
      最近更新 更多