Хапи - изменить полезную нагрузку в обработчике и переслать на другой сервер
Я работаю с Hapi 17, обрабатывая выходные данные приложения изоморфного реагирования, и мне нужно выполнить некоторые проверки выходных данных (которые могут быть как json, так и формы), прежде чем перенаправить их в сервис вниз по течению.
Я написал этот обработчик:
Server._instance.route({
method: ['POST'],
path: '/services/diary/{p*}',
handler: async (req: Hapi.Request, h: Hapi.ResponseToolkit) => {
let existingPayload = req.payload as DiaryAndUICruft;
Object.defineProperty(existingPayload, '_redirect', {
value: '/sampleUrl', // getter omitted for brevity
writable: false
});
const completeAddress = `http://${remoteAddress}:${remotePort || 1337}${req.url.path}`;
const promise = wreck.post(completeAddress, {
payload:
req.headers['content-type'].indexOf('application/json') !== -1
? existingPayload
: qs.stringify(existingPayload),
headers: req.headers
});
try {
const u = await promise;
return u.res.statusCode === 302 ? h.redirect(u.res.headers.location) : h.response(u.payload);
} catch (err) {
console.info('it did not work ', err);
return err;
}
}
});
С JSON это работает просто отлично. Я вижу на другом сервере полезную нагрузку, которая обрабатывается правильно; но если это форма, то в 50% случаев полезная нагрузка пропускает ее части. Я подозреваю, что написал эту вещь таким образом, чтобы попытаться переслать ее, даже если полезная нагрузка все еще находится на рассмотрении (но отладчик, кажется, опровергает это). Я уверен, что мне не хватает классического слона в комнате, но, как бы я ни искал, я не могу найти пример изменения полезной нагрузки с hapi 17, версией, с которой я незнаком.