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

Node.js版Azure Function读取POST请求体返回undefined问题

Azure Function Node.js POST接口无法获取req.body字段解决方案

核心排查点按优先级排序:

  • 首先检查请求头是否携带Content-Type: application/json
    Azure Function HTTP触发器默认仅在识别到该请求头时,才会自动将请求体反序列化为JavaScript对象。如果缺失该头,req.body会是原始字符串/Buffer格式,直接访问.license属性必然返回undefined,这也是本地普通Node.js服务(比如Express框架默认会做兜底解析)和Azure Function环境的常见差异点。
  • 先打印req.body全量内容确认实际格式
    替换原有日志代码,先确认body的实际类型和内容:
    context.log('req.body 类型: ', typeof req.body);
    context.log('req.body 原始内容: ', req.body);
    
    如果日志输出类型为string,说明未触发自动JSON解析,手动解析后即可正常访问字段:
    const requestBody = typeof req.body === 'string' ? JSON.parse(req.body) : req.body;
    context.log(requestBody.license);
    

    注意:如果手动执行JSON.parse时报语法错误,先检查你发送的请求体是否为标准合法JSON。你给出的示例JSON中"tenantname":"tenantname"字段后多了一个尾逗号,标准JSON不允许对象/数组最后一个属性后出现多余逗号,会直接导致解析失败。

  • 检查触发器配置是否关闭了自动解析
    如果你使用v3及更早版本的Node.js编程模型,确认function.json中HTTP触发器的输入绑定配置正常,无自定义解析拦截逻辑,基础POST方法的触发器配置参考:
    {
      "type": "httpTrigger",
      "direction": "in",
      "name": "req",
      "methods": ["post"],
      "authLevel": "function"
    }
    
    如果你使用v4版本的Node.js编程模型,确认注册HTTP触发器时没有将bodyParsing参数手动设置为false,该参数默认开启,关闭后不会自动解析任何格式的请求体。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 08:39:14