You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Strapi控制器中获取原始请求体?属性读取为undefined问题排查

问题核心原因

  1. ctx.request.body[unparsed] 存储的是未解析的原始请求体字符串,并非结构化JS对象,直接读取.email/.name属性必然返回undefined
  2. 你已开启Strapi内置的JSON解析能力,解析后的结构化参数直接存在ctx.request.body中,不需要额外读取unparsed内容

修复方案

  1. 移除控制器中不需要的koa-body/unparsed.js引入及相关逻辑
  2. 直接读取ctx.request.body上的字段,可增加一层兼容逻辑应对特殊场景下的解析异常
  3. 确认发送POST请求时携带了Content-Type: application/json请求头

修改后的控制器代码如下:

module.exports = {
  index: async (ctx) => {
    const body = ctx.request.body;
    // 兼容特殊场景下body未自动解析为对象的情况
    const parsedBody = typeof body === 'string' ? JSON.parse(body) : body;

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

如果修改后仍然无法读取参数,可在控制器中打印console.log(typeof ctx.request.body, ctx.request.body)确认body的数据类型,根据输出结果可以进一步定位解析异常原因。

内容的提问来源于stack exchange,提问作者Nikasv

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 00:54:03