Hapi-修改处理程序中的有效负载并转发到其他服务器

时间:2019-01-28 18:35:49

标签: typescript server proxy hapi isomorphic

我正在使用Hapi 17,处理同构react应用的输出,在将其转发到下游服务之前,我需要对输出(可以是json或form)进行一些检查。

我写了这个处理程序:

            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进行有效载荷更改的示例。

0 个答案:

没有答案