我有一个具有端点的Express.js服务器,期望我们的移动客户端进行多部分/表单数据请求。表单数据由一个PDF文件和两个文本字段组成。 我想解析文本字段,验证它们,如果验证通过,则将整个请求代理到另一个后端。我已经了解到,不幸的是,请求流只能使用一次。
我使用了multiparty,并获得了所有必填字段,但是流已被占用,无法被代理。
let form = new multiparty.Form();
form.parse(req, (err, fields, files) => {
if (err) return err;
return [fields, files];
});
然后,我尝试了另一种方法-将流另存为原始数据,然后对其进行代理。它已成功代理,但是我找不到用于解析原始数据的库。
let HttpProxy = require('http-proxy'),
proxy = new HttpProxy(),
streamify = require('stream-array');
let requestData = [];
req.on('data', (chunk) => {
requestData.push(chunk);
})
req.rawBody = requestData;
proxy.web(req, res, {
pathRewrite: {
"^/validate": ""
},
target: 'http://some.other.backend/multipart',
buffer: streamify(req.rawBody),
logLevel: 'debug',
changeOrigin: true,
secure: false
})
哪种方法更好,如何改进以提供任务解决方案?预先谢谢大家!