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

AWS API Gateway无法向Lambda函数传递JSON对象问题

问题解决方案
  • 确认Lambda输入参数的解析逻辑
    如果你用APIGatewayProxyRequest作为函数输入参数,API Gateway代理模式下传递的请求体是嵌套在body字段里的JSON字符串,必须手动反序列化才能拿到参数。检查代码里是否做了这一步:

    public async Task<APIGatewayProxyResponse> FunctionHandler(APIGatewayProxyRequest request, ILambdaContext context)
    {
        // 必须将request.Body反序列化为自定义实体类
        var options = new JsonSerializerOptions { PropertyNameCaseInsensitive = true };
        var input = JsonSerializer.Deserialize<ClubRequest>(request.Body, options);
        
        // 校验参数是否存在
        if (input?.ClubId == 0)
        {
            // 参数缺失时的返回逻辑
            return new APIGatewayProxyResponse { StatusCode = 400, Body = "Missing clubid parameter" };
        }
        
        // 后续过滤查询逻辑
        var data = await GetFilteredData(input.ClubId);
        return new APIGatewayProxyResponse { StatusCode = 200, Body = JsonSerializer.Serialize(data) };
    }
    
    // 对应的实体类
    public class ClubRequest
    {
        public int ClubId { get; set; }
    }
    

    注意:如果实体类属性名和JSON字段名大小写不一致(比如JSON是clubid,C#是ClubId),一定要开启PropertyNameCaseInsensitive配置。

  • 检查API Gateway集成设置

    • 如果用的是Lambda代理集成:确保集成请求的「代理集成」开关是打开的,这种模式下API Gateway会把请求包装成APIGatewayProxyRequest格式传给Lambda,必须按上面的方式解析body字段。
    • 如果不用代理集成:需要在集成请求的「映射模板」里添加application/json的模板,内容写$input.json('$'),这样API Gateway会直接把客户端的原始请求体传给Lambda,此时函数可以直接接收自定义实体类作为输入参数。
  • 修正测试请求格式

    • Postman或客户端请求时,直接传原始JSON,不要嵌套包装:
      {"clubid":1000}
      
      同时必须设置请求头Content-Type: application/json。
    • API Gateway测试控制台用「API Gateway AWS Proxy」模板时,模板本身的格式是正确的,但要确保你没有手动修改成无效JSON(比如你尝试的{ {"clubid":1000} }是语法错误,无法解析)。
  • 加日志排查实际请求内容
    在Lambda函数里添加日志,打印完整的请求对象,去CloudWatch日志里查看实际收到的参数结构:

    context.Logger.LogInformation($"Raw request received: {JsonSerializer.Serialize(request)}");
    

    通过日志可以确认body字段的内容是否正确,有没有出现转义错误或者参数缺失的情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 10:04:50