首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AWS API网关通过Postman返回不同的状态到方法测试

问AWS API网关通过Postman返回不同的状态到方法测试
EN

Stack Overflow用户
提问于 2019-06-11 15:29:33
回答 2查看 488关注 0票数 1

我将AWS Lambda集成到API Gateway中。当前的lambda只是返回一个错误:

代码语言:javascript
复制
exports.handler = (event, context, callback) => {
  context.fail(JSON.stringify({
    status: 500,
    errors: 'This is definitely the same endpoint.'
  }));
};

我在API Gateway的method response中添加了HTTP status 500响应,并使用regex *"status": 500 .*将集成响应映射到500响应。

当我使用AWS中的方法测试功能进行测试时,我得到了我期望的500响应:

​

​

但是,当使用Postman向端点发送命令时,我得到一个200状态:

​

​

这怎么可能呢?方法测试似乎表明我的集成响应和方法响应设置是正确的,并且我的正则表达式设置正确,但是API Gateway和世界上其他地方之间缺少了什么会产生这种不同的结果?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-06-11 17:09:22

你有没有试过部署API?也许重新部署可以解决这些问题。

票数 2
EN

Stack Overflow用户

发布于 2019-06-11 16:22:35

你是不是已经看过Handle Custom Lambda Errors in API Gateway指南了?

建议的格式为:

代码语言:javascript
复制
{
   "isBase64Encoded" : "boolean",
   "statusCode": "number",
   "headers": { ... },
   "body": "JSON string"
}

所以基本上需要返回这个JSON结构。我用AWS serverless express library (第100-105行)检查了一下--我们使用它--它返回了这个结构。

主要的挑战是,将HTTP响应发送到客户端是API网关的一项任务,为此,必须以API网关无法理解的格式从lambda返回有效的JSON响应。lambda的执行状态也将是200 (因为它工作在A- of ),但是API Gateway会将您的响应转换为500。这也是为什么需要这种双/三重JSON编码(JSON-as-string in JSON-attributes)的原因。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56538608

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档