GoLang AWS Lambda 函数在 API 网关请求中缺少主体

我正在使用 AWS Lambda 函数来处理来自 AWS API Gateway 调用的请求。我正在根据请求发送负载,并且可以在 CloudWatch 中验证负载是否从网关传递到 lambda 函数。但是,请求正文在我的 Lambda 函数中为空。

这是我的 Lambda 代码:

package main


import (

    "context"

    "fmt"


    "github.com/aws/aws-lambda-go/events"

    "github.com/aws/aws-lambda-go/lambda"

)


func handleRequest(ctx context.Context, request events.APIGatewayProxyRequest) (events.APIGatewayProxyResponse, error) {


    fmt.Println("Body")

    fmt.Println(request.Body)


    fmt.Printf("Processing request data for request %s.\n", request.RequestContext.RequestID)


    fmt.Printf("Processing request data for request %s.\n", request.RequestContext.RequestID)

    fmt.Printf("Body size = %d.\n", len(request.Body))


    fmt.Println("Headers:")

    for key, value := range request.Headers {

        fmt.Printf("    %s: %s\n", key, value)

    }


    return events.APIGatewayProxyResponse{Body: request.Body, StatusCode: 200}, nil

}


func main() {

    lambda.Start(handleRequest)

}

我期望在 Cloudwatch 中的“Body”之后看到一些数据,但什么也没有。


HUWWW
浏览 146回答 1
1回答

慕妹3146593

原始问题中的代码是正确的。handleRequest 的第二个参数的类型为 APIGatewayProxyRequest。在API网关中,我发送的是普通请求,而不是代理请求。我将 API 网关路由重新部署为代理请求,并获得了我期望的请求正文。我仍然不确定我的原始请求是否无法发送正文,或者传递到handleRequest函数的正常请求的结构是否与代理请求的结构不同,因此APIGatewayProxyRequest类型无法解析其正文。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go