nodejs api не пересылает ответ, полученный от другого сервиса - PullRequest
0 голосов
/ 20 февраля 2019

Я разработал API-интерфейс nodejs для прослушивания 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);
        }
    })
  });

Ответы [ 2 ]

0 голосов
/ 21 февраля 2019

Я нашел решение этой проблемы.в опции я должен добавить кодировку: null, иначе тело будет преобразовано в строку.когда тело преобразуется в строку, файл будет поврежден.

0 голосов
/ 20 февраля 2019

для экспресса

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