登录
首页 >  Golang >  Go问答

GoLang AWS Lambda 函数接收不到 API 网关请求的主体

来源:stackoverflow

时间:2024-03-04 22:36:30 109浏览 收藏

亲爱的编程学习爱好者,如果你点开了这篇文章,说明你对《GoLang AWS Lambda 函数接收不到 API 网关请求的主体》很感兴趣。本篇文章就来给大家详细解析一下,主要介绍一下,希望所有认真读完的童鞋们,都有实质性的提高。

问题内容

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

我查看了这个问题: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类型无法解析其正文.

以上就是《GoLang AWS Lambda 函数接收不到 API 网关请求的主体》的详细内容,更多关于的资料请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>