如何将AWS API Gateway查询字符串映射到C#AWS Lambda函数?

时间:2016-12-22 12:32:41

标签: c# amazon-web-services aws-lambda

我有一个C#lambda函数,它使用GET请求从API网关调用。

[LambdaSerializer(typeof(Amazon.Lambda.Serialization.Json.JsonSerializer))]
public ResponseModel MyFunction(RequestModel request)
{
    return new ResponseModel { body = "Hello world!" };
}

public class RequestModel 
{
    [JsonProperty("a")]
    public string A { get; set; }

    [JsonProperty("b")]
    public string B { get; set; }
}

public class ResponseModel 
{
    public int statusCode { get; set; } = 200;
    public object headers { get; set; } = new object();
    public string body { get; set; } = "";
}

如何将发送到API网关的查询字符串参数映射到RequestModel中的MyFunction参数?

我已经使用参数调用了该函数,但它们似乎没有通过。有没有等待用C#lambda函数实现这个?

谢谢,

克里斯

1 个答案:

答案 0 :(得分:2)

尝试将其放入RequestModel

public class RequestModel 
{
   [JsonProperty("queryStringParameters")]
   public Dictionary<string, string> QueryStringParameters { get; set; }
}

然后将查询字符串值作为request.QueryStringParameters["foo"]等访问

如果您在API网关中检查了Use Lambda Proxy integration框中的资源和方法(我怀疑您这样做了,因为您已使用statusCodeheaders构建了响应对象,和body字段),相应的请求对象结构记录在Input Format of a Lambda Function for Proxy Integration中,深埋在AWS的文档中。还有其他可用的字段,如正文,标题,HTTP动词等。

我的理解是您还可以创建自定义Payload Mapping以将请求的不同部分映射到自定义JSON对象,但这样做需要比使用内置Lambda代理更多的配置。