如何解析多部分请求然后代理

时间:2019-05-07 09:13:15

标签: javascript express proxy multipartform-data multiparty

我有一个具有端点的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
})

哪种方法更好,如何改进以提供任务解决方案?预先谢谢大家!

0 个答案:

没有答案