首页 > 解决方案 > 如何在 Strapi 控制器中获取原始请求正文

问题描述

在 Strapi 控制器中获取请求正文时遇到问题。我正在尝试在用户发出 POST 请求后发送电子邮件(我使用的提供商是 SendGrid)。试图使电子邮件动态化。

发布请求正文:

{
    name:"testname",
    email:"test@test.com",
    type: "normal"
}

我在 \config\routes.json 中有一条路线

  {
      "method": "POST",
      "path": "/brochure",
      "handler": "brochure.index",
      "config": {
        "policies": []
      }
  } 

在 \controllers\brochure.js

const unparsed = require("koa-body/unparsed.js");


module.exports = {
  index: async (ctx) => {
    const unparsedBody = ctx.request.body[unparsed];

    console.log(unparsedBody); // undefined
     await strapi.plugins["email"].services.email.send({
       to: unparsedBody.email,
       from: "test@asd.com",
       subject: "testing Subject",
       text: `Heloooo ${unparsedBody.name}`,
     });
     ctx.send("Email Sent");
  },
};

在 \config\middleware.js 我有:

module.exports = {
  settings: {
    cors: {
      enabled: true,
    },
    parser: {
      enabled: true,
      multipart: true,
      includeUnparsed: true,
    },
  },
};

奇怪的是,当我登录ctx.request.body终端日志时,我可以看到带有nameemailtype的 POST 对象是可见的,但是在登录时,例如,ctx.request.body.name它是未定义的。

标签: node.jsreactjsnext.jsstrapikoa

解决方案


推荐阅读