您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

通过API GW调用时AWS Lambda Go函数未获取请求主体

通过API GW调用时AWS Lambda Go函数未获取请求主体

事实证明,即使我无法在面向用户的网站上找到与此相关的任何文档,也确实存在文档。阅读此内容https ://github.com/aws/aws-lambda- go/blob/master/events/README_ApiGatewayEvent.md

到目前为止,这是我想出的从API GW接收数据并响应请求的最简单方法

package main

import (
    "context"
    "encoding/json"
    "github.com/aws/aws-lambda-go/lambda"
    "github.com/aws/aws-lambda-go/events"
    "log"
)

type myReturn struct {
    Response string `json:"response"`
}

func handle(ctx context.Context, name events.APIGatewayProxyRequest) (events.APIGatewayProxyResponse, error) {
    log.Print("Request body: ", name)
    log.Print("context ", ctx)
    headers := map[string]string{"Access-Control-Allow-Origin": "*", "Access-Control-Allow-Headers": "Origin, X-Requested-With, Content-Type, Accept"}

    code := 200
    response, error := json.Marshal(myReturn{Response:"Hello, " + name.Body})
    if error != nil {
        log.Println(error)
        response = []byte("Internal Server Error")
        code = 500
    }

    return events.APIGatewayProxyResponse {code, headers, string(response), false}, nil
}

func main() {
    lambda.Start(handle)
}

在这种情况下,该log.Print("Request body: ", name)行会导致记录准确的请求正文。问题解决了。

注意:同样,我也不必APIGWResponse从问题中创建该对象,这events.APIGatewayProxyResponse是已经为您完成的完全相同的事情。这些对象都在此类中:https : //github.com/aws/aws-lambda- go/blob/master/events/apigw.go

Go 2022/1/1 18:14:51 有524人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶