gpt4 book ai didi

javascript - 如何访问 Fastify 请求的原始正文?

转载 作者:行者123 更新时间:2023-11-30 23:54:57 25 4
gpt4 key购买 nike

正如你想象的那样,我对 Express 很熟悉,但这是我第一次使用 Fastify。

我想访问 Fastify 请求的未修改正文,以进行 Webhook 的签名验证 - 即,我希望看到请求传入时未被任何中间件修改的情况。在 Express 中,这通常是通过访问 request.rawBody 来完成的。

如何访问 Fastify 请求的原始正文?

最佳答案

您还可以查看这个社区插件:https://github.com/Eomm/fastify-raw-body

如果您使用 Typescript 和 fastify/autoload,请将其放置到 plugins/rawbody.ts 中:

import fp from "fastify-plugin";

import rawbody, { RawBodyPluginOptions } from "fastify-raw-body";

export default fp<RawBodyPluginOptions>(async (fastify) => {
fastify.register(rawbody, {
field: "rawBody", // change the default request.rawBody property name
global: false, // add the rawBody to every request. **Default true**
encoding: "utf8", // set it to false to set rawBody as a Buffer **Default utf8**
runFirst: true, // get the body before any preParsing hook change/uncompress it. **Default false**
routes: [], // array of routes, **`global`** will be ignored, wildcard routes not supported
});
});

由于 global:false 我们需要在特定的处理程序中配置它:

  fastify.post<{ Body: any }>(
"/api/stripe_webhook",
{
config: {
// add the rawBody to this route. if false, rawBody will be disabled when global is true
rawBody: true,
},
},

async function (request, reply) {
...

然后您可以使用 request.rawBody 访问处理程序中的原始正文

关于javascript - 如何访问 Fastify 请求的原始正文?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61122089/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com