我有一个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函数实现这个?
谢谢,
克里斯
答案 0 :(得分:2)
尝试将其放入RequestModel
:
public class RequestModel
{
[JsonProperty("queryStringParameters")]
public Dictionary<string, string> QueryStringParameters { get; set; }
}
然后将查询字符串值作为request.QueryStringParameters["foo"]
等访问
如果您在API网关中检查了Use Lambda Proxy integration
框中的资源和方法(我怀疑您这样做了,因为您已使用statusCode
,headers
构建了响应对象,和body
字段),相应的请求对象结构记录在Input Format of a Lambda Function for Proxy Integration中,深埋在AWS的文档中。还有其他可用的字段,如正文,标题,HTTP动词等。
我的理解是您还可以创建自定义Payload Mapping以将请求的不同部分映射到自定义JSON对象,但这样做需要比使用内置Lambda代理更多的配置。