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) {
...
4条答案
按热度按时间6bc51xsx1#
您也可以查看此社区插件:https://github.com/Eomm/fastify-raw-body
如果您使用的是Typescript & fastify/autoload,请将其放置到plugins/rawbody.ts:
字符串
由于
global:false
我们需要在特定的处理程序中配置它:型
然后,您可以使用
request.rawBody
访问处理程序中的原始主体xfb7svmp2#
备注:Fastify请求只能有req.body -它们不能像其他Web服务器(例如Express)那样有req.body和req.rawBody。这是因为
addContentTypeParser()
只返回修改后的body
,它不能向请求添加任何其他内容。相反,在内容类型解析器中,我们 * 只 * 添加到一个路由,我们做:
req.body.parsed
(对象,与通常在req.body中的内容相同)req.body.raw
(字符串)更多信息请参见GitHub和addContentTypeParser()文档。
字符串
fdbelqdn3#
GitHub上的rawBody支持有问题
还有一个模块:"raw-body"。要在Fastify中使用这个模块:
字符串
我希望我能帮助你,我也是新的fastify
n3ipq98p4#
根据文档https://docs.nestjs.com/faq/raw-body
在main.ts中
字符串
然后在您的控制器中
型