【发布时间】:2019-07-05 00:39:53
【问题描述】:
我正在使用 expressjs 来创建和 API。 我还有一个代理服务器可以将请求定向到我的 API 服务器,如下所示:
但在 API 服务器上,POST 和 PUT 请求的正文无法解析,服务器挂起。
// on proxy server
const httpProxy = require('http-proxy');
const proxy = httpProxy.createProxyServer({});
app.all('/api/*', function(req, res){
proxy.web(req, res, { target: 'http://example.com:9000' });
});
proxy.on('proxyReq', function(proxyReq, req, res, options) {
if ((req.method == "POST" || req.method == "PUT") && req.body) {
proxyReq.write(JSON.stringify(req.body));
proxyReq.end();
}
});
proxy.on('proxyRes', function(proxyRes, req, res) {
var body = '';
proxyRes.on('data', function(chunk) {
body += chunk;
});
proxyRes.on('end', function() {
});
});
部分api服务器解析body内容。
// on api server
app.use(bodyParser.json({ }));
app.use(bodyParser.urlencoded({ extended: true }));
app.use(cookieParser());
app.use(compress());
app.use(methodOverride());
我意识到它挂在 bodyParser() 中间件中。
任何帮助将不胜感激。我已经在 stackoverflow 上尝试了各种解决方案,但没有一个对我有用。
【问题讨论】:
-
req.body看起来像什么?真的是 JSON 吗? -
@shaochuancs
bodyparser无法解析到请求所以没有req.body
标签: node.js express body-parser node-http-proxy