Хапи - изменить полезную нагрузку в обработчике и переслать на другой сервер - PullRequest
0 голосов
/ 28 января 2019

Я работаю с 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, версией, с которой я незнаком.

...