【问题标题】:How to return nothing in AWS API Gateway?如何在 AWS API Gateway 中不返回任何内容?
【发布时间】:2017-05-12 13:56:18
【问题描述】:

抱歉这个愚蠢的问题,但我什么都试过了。

我有一个来自 Lambda 函数的 AWS API 网关,我只需要返回没有正文的 HTTP 代码 200。如果 lambda 返回一个空字符串,则正文显示“”(2 个引号)。如果 lambda 返回 null,则正文显示单词 null。

有什么收获?如何返回一个空的身体?

有关信息,我正在使用 Slack dash 命令调用 API。所以调用返回一个HTTP 200 OK,结果是通过POST在一个响应url中发送的;所以可以在HTTP结果之后进行处理,以避免超时问题。

【问题讨论】:

  • 您的 API Gateway 端点的响应映射模板是什么样的?

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


【解决方案1】:

如果您在“集成请求”部分使用“lambda 代理集成”(请参阅​​随附的屏幕截图),您可以通过以下结构简单地返回一个空字符串。

module.exports.hello = (event, context, callback) => {
  const response = {
    statusCode: 200,
    body: ''
  };
  callback(null, response);
};

【讨论】:

【解决方案2】:

我遇到了完全相同的问题。 Lambda 代理集成对我不起作用。 (Lambda 没有收到 API Gateway 的请求。我认为 Proxy 禁用了 Integrated Request > Mapping Template,它将 slack 的 application/x-www-form-urlencoded 转换为 Lambda 可以读取的 JSON。)

相反,我得到了另一个解决方案:使用Integrated Response。选中200并添加Mapping Template然后填写如下代码:

#set($inputRoot = $input.path('$'))

保存并部署 API 后(务必在 Lambda 函数中返回 null),我的问题解决了。 (在我的例子中,我想隐藏用户输入的斜杠命令,只显示结果。)

我参考过这篇文章:https://medium.com/@farski/learn-aws-api-gateway-with-the-slack-police-ca8d636e9fc0

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-20
    • 1970-01-01
    • 1970-01-01
    • 2021-08-09
    • 2015-10-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多