【发布时间】:2014-11-25 03:22:21
【问题描述】:
我使用以下 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 请求上?
如何更改它以支持它们?
【问题讨论】:
-
您是否在已经读取所有请求数据的路由之前使用了正文解析中间件?
-
@mscdex 我正在处理angular-fullstack yeoman generated project。看到项目uses the body-parser package,所以答案大概是yes
-
尝试在正文解析中间件之前移动您的自定义中间件(甚至将其作为第一个中间件),看看是否有帮助。
-
@mscdex 谢谢!注释掉the two lines using
body-parser就行了,但我宁愿继续使用它。我不太确定如何“移动我的中间件”,我在上面的routes.js中设置了我的代理代码。另外,我认为您可以添加您的 cmets 作为答案,一旦我们解决了这个问题,我会接受它。 -
@mscdex 还有,你能解释一下为什么
body-parser挂起代理吗?
标签: json node.js express proxy