json - 使用 node express 代理 json 请求

标签 json node.js express proxy

我使用以下 node-express 代码来代理从 Web 服务器到 API 服务器的请求:

app.use('/api', function(req, res) {
  var url = 'http://my.domain.com/api' + req.url;
  req.pipe(request(url)).pipe(res);
});

这适用于任何动词(get、post 等)的简单请求,但是一旦我发送 'Content-type': 'application/json' 请求,它就会挂起pipe 行。

为什么这个简单的 node-express 代理代码会卡在 json 请求上?
如何改变它来支持他们?

最佳答案

之前您需要移动自定义中间件函数 this line以便它在任何主体解析器之前执行。这可确保请求数据仍然存在,以便通过管道传输到自定义中间件中的 request(url)

目前挂起的原因是req没有数据写入request(url)(因为body解析中间件已经读取了所有的请求数据并且解析它),所以它永远不会在 request(url) 流上调用 .end()。这意味着对 url 的请求永远不会完成,因为它只是坐在那里等待它永远不会获得的数据。

关于json - 使用 node express 代理 json 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26121830/

相关文章:

html - 如何使用 express 发送带有 css 的 html 文件作为对连接客户端的响应

node.js - 如何使用 Mongoose、Express、Angular 4 和 NodeJS 上传/保存和显示图片

JSON 和转义字符

javascript - 通过 Websockets 发送多点触控事件

javascript - Browserify 使用我系统中文件夹的路径

javascript - 是否可以创建自定义 Mongoose 查询功能?

javascript - 页面因未知原因卡住

java - 用 Java 编写简单的 JSON 响应

JavaScript/如何在 node.js 中创建一个新对象?

javascript - express + cors() 无法正常工作