amazon-web-services - API 网关集成请求 HTTP header 未将查询字符串映射到 header

标签 amazon-web-services go aws-lambda aws-api-gateway

在 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/

相关文章:

postgresql - 在 Kubernetes 集群中使用 pgAdmin 访问数据库

amazon-ec2 - 我应该使用 Amazon 的 AWS 虚拟私有(private)云 (VPC)

debugging - golang断点在intellij idea 2016.1.1中不起作用

Gorilla mux 调用不正确的处理程序?

python - AWS API 网关和 Lambda - API 分页

hadoop - 我如何使用 boto3 在现有的 emr 集群上应用安全配置?

amazon-web-services - 云形成中的用户数据中的引用未得到解决

java - 从 Java 获取当前 AWS Data Pipeline 状态

go - 使用构建标签排除 Go 中的完整包

node.js - 将消息从 AWS Lambda 推送到 Kafka