gpt4 book ai didi

API 网关请求中缺少 GoLang AWS Lambda 函数正文

转载 作者:数据小太阳 更新时间:2023-10-29 03:18:36 25 4
gpt4 key购买 nike

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

我看了这个问题:AWS Lambda Go function not getting request body when called via API GW

我正在尝试使用此库复制答案:https://github.com/aws/aws-lambda-go/blob/master/events/apigw.go , 但我仍然无法获取请求正文。

这是我的 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”之后的一些数据,但什么也没有。

最佳答案

原题中的代码是正确的。 handleRequest 的第二个参数是 APIGatewayProxyRequest 类型。在 API 网关中,我发送的是普通请求,而不是代理请求。我将我的 API 网关路由重新部署为代理请求,并获得了我期望的请求主体。我仍然不确定我的原始请求是否未能发送正文,或者传递给 handleRequest 函数的普通请求的结构是否与代理请求的结构不同,因此 APIGatewayProxyRequest 类型无法解析其正文.

关于API 网关请求中缺少 GoLang AWS Lambda 函数正文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57361139/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com