事实证明,即使我在一个面向用户的网站上找不到任何关于这个的文档,文档确实存在。请阅读以下内容:
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