在 Api-Gateway 上,我正在尝试设置从“方法请求”查询字符串到“集成请求” header 到 lambda 的映射,但映射永远不会到达 lambda 函数。
在“方法请求”>“URL 查询字符串参数”上,我将其设置为“customerIdentification”
然后如文档所述:doc
转到“集成请求”>“HTTP header ”添加名称“userId”并映射到“method.request.querystring.customerIdentification”
package main
import (
"context"
"encoding/json"
"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.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)
}
xxx, err := json.Marshal(request.Headers)
if err != nil {
fmt.Println("*** err *** err *** err *** err *** err ")
fmt.Println(err)
fmt.Println("*** err *** err *** err *** err *** err ")
}
return events.APIGatewayProxyResponse{Body: string(xxx), StatusCode: 200}, nil
}
func main() {
lambda.Start(handleRequest)
}
我希望在 golang lambda 函数代码中,我可以从“request.Headers”中检索“userId”。
但总是空着
最佳答案
要从 golang 中的映射中检索任何键的值,您可以简单地这样做
val, ok := request.Headers["userId"]
if ok { // the key is present
fmt.Println(val)
}
但是您确定键“userId”在 header 中吗?通常这些类型的 key 只会在 body 里。如果您想交叉检查,请尝试解码您的请求。正文为 map[string]string 并从那里检索“userd”。
关于amazon-web-services - API 网关集成请求 HTTP header 未将查询字符串映射到 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57087356/