如何在AWS API Gateway中不返回任何内容?

时间:2017-05-12 13:56:19

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

抱歉这个愚蠢的问题,但我尝试了一切。

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

有什么收获?如何归还空体?

有关信息,我使用Slack dash命令来调用API。因此调用返回HTTP 200 OK,结果由POST在响应URL中发送;因此可以在HTTP结果之后进行处理,以避免超时问题。

2 个答案:

答案 0 :(得分:5)

如果您正在使用" lambda代理集成"在"集成请求"部分(参见附件截图),您只需通过以下结构返回一个空字符串。

enter image description here

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

答案 1 :(得分:1)

我遇到了完全相同的问题。 Lambda代理集成对我不起作用。 (Lambda没有收到来自API Gateway的请求。我认为代理已禁用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