【问题标题】:How do I map AWS API Gateway query string to C# AWS Lambda function?如何将 AWS API Gateway 查询字符串映射到 C# AWS Lambda 函数?
【发布时间】:2017-05-08 02:06:22
【问题描述】:

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

[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网关的查询字符串参数映射到MyFunction中的RequestModel参数?

我已经用参数调用了函数,但它们似乎没有通过。是否需要等待使用 C# lambda 函数来实现这一目标?

谢谢,

克里斯

【问题讨论】:

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


    【解决方案1】:

    尝试将其放入您的RequestModel

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

    然后以request.QueryStringParameters["foo"]等方式访问查询字符串值

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

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

    【讨论】:

      猜你喜欢
      • 2023-04-02
      • 2019-05-26
      • 2017-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-28
      • 2016-07-21
      相关资源
      最近更新 更多