【问题标题】:AWS API Gateway: Use Mock Integration to echo response bodyAWS API Gateway:使用模拟集成来回显响应正文
【发布时间】:2020-04-28 22:17:06
【问题描述】:

我正在尝试使用 Mock 集成来“回显”我发送的 JSON 正文。但是,我就是无法让它工作。我可以从“POST - 集成响应”返回任意 JSON 正文,但从未通过 $input.json('$') 找到请求 JSON。我已经能够成功回显任何查询参数。

我的 API 有一个“/”路径和一个定义的方法 (POST)。导出的 yaml 为 here 。

你知道会发生什么吗?

【问题讨论】:

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


    【解决方案1】:

    我发现这实际上是可能的,虽然有点老套。 首先,在集成请求映射模板中,您将正文存储在路径参数中。

    #set($context.requestOverride.path.body = $input.body)
    {
      "statusCode": 200,
    }
    

    然后在集成响应映射模板中取回并返回它。

    #set($body = $context.requestOverride.path.body)
    {
      "statusCode": 200,
      "body": $body,
    }
    

    这似乎甚至适用于更大的有效负载。

    【讨论】:

    • 这对我有用,也可以添加到,如果你想解析正文并提取它,我们可以使用"someVar": $util.parseJson($body).someVar,
    【解决方案2】:

    很遗憾,这不受支持。在“集成响应”的映射模板中,$input 表示从集成响应接收到的有效负载(在 MOCK 集成的情况下为空。

    【讨论】:

    • 啊,等等。那么如何访问输入查询参数呢?
    • 我也想知道现在是否可行。
    • 查询参数和标题对我来说像往常一样传递(使用方法请求传递模板)。但身体总是 {} 来自 Mock。
    • 不确定它是否“受支持”,但有办法做到这一点。请参阅下面的答案。
    【解决方案3】:

    您可以设置一个用于回显目的的 lambda 函数,如下所示:

    exports.handler = async (event) => {
        return event;
    };
    

    【讨论】:

      猜你喜欢
      • 2018-05-02
      • 2018-06-09
      • 2020-04-18
      • 2016-12-03
      • 2019-10-25
      • 2018-04-15
      • 2019-06-04
      • 2018-01-20
      • 2017-10-14
      相关资源
      最近更新 更多