2017-06-12 62 views
1

我正在使用第三方API Rest,它返回正文中文件的内容。该文件可以是文本或二进制文件(pdf,docx)。从响应中重新发送身体

出于安全原因,我需要使用中间API Rest作为我的前端应用程序和此第三方API Rest之间的桥梁。

我想要的是能够返回从第三方到我的前端应用程序的完全相同的身体,因为在我获得身体并在我的中间API中构建新响应的那一刻,我以某种方式修改某物

这是我做的,我中间API:

const options = { 
    method: 'GET', 
    uri: `${api}`, 
    headers: { OTCSTICKET: ticket} 
} 

rp(options) 
    .then(parsedBody => res.status(201).send(parsedBody)) 
    .catch(err => res.status(400).send({ msg: 'download error', err })); 

我需要精确地发送相同的身体,我的回应得到的。我怎样才能做到这一点?

谢谢

+0

格式化代码指出缺少关闭\',你应该检查它是否在你的代码中缺失,如果没有修复它的问题。 – Aaron

+0

修复了这个问题;原来的代码很好,谢谢。 – David

+0

[使用请求获取Node.js中的二进制内容]的可能重复(https://stackoverflow.com/questions/14855015/getting-binary-content-in-node-js-using-request) – GilZ

回答

0

好吧我设法让这个工作,所以我会张贴在这里,以防万一它帮助某人。

这个线程给我的解决方案 Getting binary content in Node.js using request

所以我只是将编码设置为空,我的身体通过了一个我从第三方API

const options = { 
    method: 'GET', 
    uri: `${api}`, 
    headers: { OTCSTICKET: ticket}, 
    encoding: null, 
    resolveWithFullResponse: true 
} 

rp(options) 
    .then(response => res.status(201).send(response.body)) 
    .catch(err => res.status(400).send({ msg: 'download error', err })); 

拿到有了这个,我设法得到这个工作。