事实证明,即使我无法在面向用户的网站上找到与此相关的任何文档,也确实存在文档。阅读此内容: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