Я создал сервер шлюза nodejs, в котором на основе префикса URL-адреса он использует прокси-сервер с помощью express-http-proxy:1.5.1 для многих других микросервисов, подобных этому.
this.router.all(Routes.ABC, httpProxy(baseUrl.XYZ, {
parseReqBody: false,
}));
теперь у одной из моих ms есть API, который держит form-data в этом отношении мне нужно установить
parseReqBody : false
теперь, если я это сделаю, он прекратит синтаксический анализ body для других API на той же мс.
Я попытался передать функцию этому parseReqBody, чтобы на основе заголовка Content-Type я мог установить для него значение true или false.
Но он не принимает функцию, ему нужно прямое значение boolean.
Я хочу сделать эту опору ложной, если есть данные формы, иначе она должна анализировать тело.
И есть ли способ работать обоим?





это решило мою проблему
const isMultipartRequest = function (req: Request) {
const contentTypeHeader = req.headers['content-type']
return contentTypeHeader && contentTypeHeader.indexOf('multipart') > -1
}
const proxy = function (host: string) {
return function (req: Request, res: Response, next: NextFunction) {
let reqBodyEncoding
let reqAsBuffer = false
let parseReqBody = true
if (isMultipartRequest(req)) {
reqAsBuffer = true
reqBodyEncoding = null
parseReqBody = false
}
return default_proxy(host, {
reqAsBuffer,
reqBodyEncoding,
parseReqBody
})(req, res, next)
}
}
app.all(/widget/, proxy('localhost:3002'))