javascript - 完全按原样从响应中重新发送正文

标签 javascript http

我正在使用第 3 方 API Rest,它返回正文中的文件内容。此文件可以是文本或二进制文件(pdf、docx)。

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

我想要的是能够将从第 3 方获得的完全相同的主体返回到我的前端应用程序,因为此刻当我获得主体并在我的中间 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 }));

我需要发送与我在响应中得到的完全相同的正文。我该怎么做?

谢谢

最佳答案

好的,我设法让它工作了,所以我会在这里发帖,以防它对某人有帮助。

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

所以我只是将编码设置为 null,并将我从第 3 方 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 }));

有了这个,我设法让它工作。

关于javascript - 完全按原样从响应中重新发送正文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44500590/

相关文章:

javascript - 为什么这个函数没有在页面加载时执行? (如何在页面加载时使用 JavaScript 创建 HTML 选项)

javascript - RequestAnimationFrame 调用时间根据我的 Canvas 大小而变化

c# - Node.js 服务器向 Windows C# 客户端发出命令

http - cookie 中的域名

.htaccess - 通过 .htaccess 将单个 HTTP URL 重定向到 HTTPS

不支持 SSL 的 HTTP 状态代码

javascript - setInterval 在 IE 8 中每秒 50 次缓慢

javascript - 如何动态更改 HTML 链接的 href 属性

javascript - 使用循环和递归的斐波那契数列

http - ECS不会启动实例, "unable to place a task because the resources could not be found."