【问题标题】:Aws Api Gateway Integration Request How to append a property to request body?Aws Api 网关集成请求如何将属性附加到请求正文?
【发布时间】:2018-03-06 12:55:29
【问题描述】:

我想在将请求正文和查询字符串参数发送到 lambda 之前将其组合起来。假设我在 Lambda 中有一个实体,如下所示:

Class Person {
private String firstName;
private String lastName;
private String language;
}

发送到api网关的json是{"firstName":"Foo","lastName":"Bar"} 如您所见,请求正文中的 “语言” 字段 缺失。我想从查询字符串中获取这个 语言字段 并添加到 json。 我怎样才能达到 tihs ?

集成请求部分有办法吗? 例如:

$input.json(x).append("language":"$input.params('name')")

我找不到任何有价值的信息。 提前致谢。

【问题讨论】:

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


    【解决方案1】:

    您可以在集成请求部分使用正文映射模板并获取请求正文和查询字符串。在正文映射模板处构造一个新的 JSON,其中将包含来自请求正文和查询字符串的数据。当我们添加身体映射模板时,您的业务逻辑将获得我们在身体映射模板中构建的 JSON。

    请在正文映射模板中获取查询字符串,

    $input.params('querystringkey')
    

    例如体内映射模板,

    #set($inputRoot = $input.path('$'))
    {
    "firstName" : "$input.path('$.firstName')",
    "lastName" : "$input.path('$.lastName')"
    "language" : "$input.params('$.language')"
    }
    

    请阅读https://aws.amazon.com/blogs/compute/tag/mapping-templates/了解更多关于身体映射模板的详细信息

    【讨论】:

    • 我不想构建新的 json,因为如果我这样做,我必须更改 Lambda 中的实体。谢谢。
    • 您可以在body mapping模板中添加完整的实体,而不需要对实体结构做任何改变。或者您是否乐意直接在代码中获取查询字符串?我已经改变了我的答案。
    猜你喜欢
    • 2022-07-05
    • 1970-01-01
    • 2018-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-13
    • 1970-01-01
    • 2021-12-19
    相关资源
    最近更新 更多