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

Azure Function App中JavaScript无法读取Post请求Body的问题

解决Azure Functions中无法读取POST请求Body的问题

嘿,我之前在早期Azure Functions的beta版本+Node 6环境里踩过这个坑!你的代码逻辑本身没毛病,但旧版运行时默认不会自动解析POST请求的JSON Body,这是当时的一个限制。给你两个解决方案,按需选择:

方案1:手动解析原始请求体(适配当前旧环境)

在Node 6.x搭配beta运行时的环境中,req.body不会被自动解析,你得从req.rawBody拿到原始的请求体字符串,手动转成JSON。修改你的index.js代码如下:

module.exports = function (context, req) {
    context.log('JavaScript HTTP trigger function processed a request.');
    
    let requestName;
    // 优先取URL参数里的name
    if (req.query.name) {
        requestName = req.query.name;
    } 
    // 处理POST请求的Body
    else if (req.rawBody) {
        try {
            // 手动解析JSON格式的请求体
            const body = JSON.parse(req.rawBody);
            requestName = body.name;
        } catch (err) {
            context.res = {
                status: 400,
                body: "Invalid JSON body provided."
            };
            context.done();
            return;
        }
    }

    if (requestName) {
        context.res = {
            body: "Hello " + requestName
        };
    } else {
        context.res = {
            status: 400,
            body: "Please pass a name on the query string or in the request body."
        };
    }
    context.done();
}

另外要注意:发送POST请求时,一定要把请求头的Content-Type设为application/json,不然解析会失败哦。

方案2:升级运行时版本(推荐,一劳永逸)

你现在用的beta版本和Node 6.5.0都是非常老旧的版本了,Node 6早就停止官方支持,Azure Functions的beta运行时也有很多已知问题。建议直接升级到稳定版:

  • 登录Azure门户,打开你的Function App
  • 进入「配置」->「应用程序设置」
  • 把FUNCTIONS_EXTENSION_VERSION改成~4(当前的稳定主版本)
  • 把WEBSITE_NODE_DEFAULT_VERSION改成18.x或更高的支持版本(比如20.x)
  • 重启Function App

升级之后,新版运行时会自动解析JSON请求体,你原来的代码就能直接读取req.body了,而且后续还能享受到更多新特性和安全更新。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:34:05