可以在strapi上的自定义端点上获取原始实体吗?
我正在Strapi上构建一个自定义端点。我需要原始的内容来创建这个端点。是否可以从ctx变量中获取它可以在strapi上的自定义端点上获取原始实体吗?,strapi,Strapi,我正在Strapi上构建一个自定义端点。我需要原始的内容来创建这个端点。是否可以从ctx变量中获取它 stripe : async(ctx) => { // Handle the event const sig = ctx.request.headers['stripe-signature'] let event = null try { // ctx.request.body needs to be the original raw
stripe : async(ctx) => {
// Handle the event
const sig = ctx.request.headers['stripe-signature']
let event = null
try {
// ctx.request.body needs to be the original raw body
event = stripe.webhooks.constructEvent(ctx.request.body,sig, endpointSecret)
}catch (e) {
ctx.badRequest(null,e)
return
}
我不确定是否理解你的需要 ctx.request.body包含请求的原始正文 之后,如果您想将事件作为响应体发送,您可以这样做。 ctx.body=事件
代码中还有一个警告。您编写了为事件定义常量,并将strapi webhook的结果分配给事件。您必须定义一个let变量。我不确定是否理解您的需要 ctx.request.body包含请求的原始正文 之后,如果您想将事件作为响应体发送,您可以这样做。 ctx.body=事件
代码中还有一个警告。您编写了为事件定义常量,并将strapi webhook的结果分配给事件。您必须定义一个let变量。它实际上是通过在请求环境配置config/environments/development/request.json->parser.includeUnparsed:true中打开includinUnparsed来工作的 您可以使用koa body内置功能访问未解析的body: 有些应用程序需要对请求主体进行Cryptographic验证,例如slack或stripe的Webhook。如果koa正文的选项中includeUnparsed为true,则可以访问未解析正文。启用后,从unparsed=require'koa-body/unparsed.js'导入用于访问请求正文的符号,或使用unparsed=symbol.for'unparsedBody'定义您自己的访问者。然后,可以使用ctx.request.body[unparsed]获得未解析的正文
它实际上是通过在请求环境配置config/environments/development/request.json->parser.includeUnparsed:true中打开includingUnparsed来工作的 您可以使用koa body内置功能访问未解析的body: 有些应用程序需要对请求主体进行Cryptographic验证,例如slack或stripe的Webhook。如果koa正文的选项中includeUnparsed为true,则可以访问未解析正文。启用后,从unparsed=require'koa-body/unparsed.js'导入用于访问请求正文的符号,或使用unparsed=symbol.for'unparsedBody'定义您自己的访问者。然后,可以使用ctx.request.body[unparsed]获得未解析的正文 官方的KoaBodyParser包实际上是开箱即用的。见: 下面是一个小例子: 从膝关节炎中导入膝关节炎; 从“@koa/router”导入KoaRouter; 从“koa bodyparser”导入koaBodyParser; const app =新的膝关节炎; const路由器=新的KoaRouter; const stripeCheckout=ctx,next=>{ const sig=ctx.request.header['stripe-signature']; 让事件发生; if!process.env.STRIPE\u ENDPOINT\u SECRET{ 抛出新错误“缺少条带端点机密”; } 试一试{ event=stripe.webhooks.constructEvent ctx.request.rawBody, 西格, endpointSecret:process.env.STRIPE\u ENDPOINT\u SECRET ; }犯错误{ 记录器“错误”,错误; ctx.status=400; ctx.body=`Webhook错误:${err.message}`; 下一步返回; } //…对这件事做点什么 如果event.type===“checkout.session.completed”{ const session=event.data.object; //…对结帐会话执行一些操作 } //返回响应以确认事件的接收 ctx.status=200; ctx.body={received:true}; 下一步返回; }; //职位 router.post'/stripe checkout',stripeCheckout; app.usekoaBodyParser; app.userouter.routes; app.userouter.allowedMethods; app.listenport,=>{ 记录器'log'`✅ 完成!服务器正在侦听http://localhost:${port}`; }; 官方的KoaBodyParser包实际上是开箱即用的。见: 下面是一个小例子: 从膝关节炎中导入膝关节炎; 从“@koa/router”导入KoaRouter; 从“koa bodyparser”导入koaBodyParser; const app =新的膝关节炎; const路由器=新的KoaRouter; const stripeCheckout=ctx,next=>{ const sig=ctx.request.header['stripe-signature']; 让事件发生; if!process.env.STRIPE\u ENDPOINT\u SECRET{ 抛出新错误“缺少条带端点机密”; } 试一试{ event=stripe.webhooks.constructEvent ctx.request.rawBody, 西格, endpointSecret:process.env.STRIPE\u ENDPOINT\u SECRET ; }犯错误{ 记录器“错误”,错误; ctx.status=400; ctx.body=`Webhook错误:${err.message}`; 下一步返回; } //…对这件事做点什么 如果event.type===“checkout.session.completed”{ const session=event.data.object; //…对结帐会话执行一些操作 } //返回响应以确认事件的接收 ctx.status=200; ctx.body={received:true}; 下一步返回; }; //职位 router.post'/stripe checkout',stripeCheckout; app.usekoaBodyParser; app.userouter.routes; app.us 允许的方法; app.listenport,=>{ 记录器'log'`✅ 完成!服务器正在侦听http://localhost:${port}`; }; 创建一个middleware/config/middleware.js并将其更新为以下内容
module.exports = {
settings: {
cors: {
enabled: true,
},
parser: {
enabled: true,
multipart: true,
includeUnparsed: true,
},
},
};
在controller/api//controllers/.js中:
创建一个middleware/config/middleware.js并将其更新为以下内容
module.exports = {
settings: {
cors: {
enabled: true,
},
parser: {
enabled: true,
multipart: true,
includeUnparsed: true,
},
},
};
在controller/api//controllers/.js中:
请添加一些代码片段,以了解软件包如何帮助解决OP的问题@SuiteboyApps添加了一个以上示例^请添加一些代码片段,以了解软件包如何帮助解决OP的问题@SuiteboyApps添加了一个以上示例^