【问题标题】:AWS Api Gateway response mapping regex not workingAWS Api Gateway 响应映射正则表达式不起作用
【发布时间】:2020-03-24 08:31:17
【问题描述】:

我正在尝试使用正则表达式从 AWS lambda 函数响应进行映射。 这是我的正则表达式: .*statusCode”:406.*

如您所见 - 我正在尝试从以下响应中获取特定映射:

{
  "statusCode": 406,
  "body": "{\"aerocrs\":{\"success\":false,\"error_type\":\"request\",\"details\":{\"detail\":\"Incorrect reqyest \",\"errorCode\":4}}}",
  "headers": {
    "x-powered-by": "Express",
    "content-type": "application/json; charset=utf-8",
    "content-length": "116",
    "etag": "W/\"74-Zzo6HU1M1kKkLM9KGtX0jJdePQY\"",
    "date": "Thu, 28 Nov 2019 16:03:05 GMT",
    "connection": "close"
  },
  "isBase64Encoded": false
}

但是,我总是使用默认映射。 当我将映射更改为.*.* 时,它会得到正确的映射,这是有道理的,但由于某种原因,这个正则表达式不起作用。 你有什么主意吗? 谢谢!

【问题讨论】:

  • 格式化毁了一切。正则表达式是 .*statusCode”:406.*

标签: node.js amazon-web-services aws-lambda aws-api-gateway


【解决方案1】:

看起来输出在 406 之前有一个空格。如果将该空格添加到正则表达式会发生什么?

--编辑添加:我一直在使用这个网站(自然而然地带有编辑过的东西)-https://regex101.com/

【讨论】:

  • 谢谢!但它也没有用,我什至试着把 .*statusCode*.它仍然无法识别它。我也试过你给的网站 - 它正在工作。我认为这是网关中的东西。以下是屏幕截图:prnt.sc/q3r9l2prnt.sc/q3r9zoprnt.sc/q3rahx
【解决方案2】:

我设法找到了问题! 感谢this great person.

长话短说。 AWS Api Gateway 对于错误正则表达式非常挑剔和烦人。这意味着,那是在寻找一个特定的结构。类似的东西:

{
  "errorType": "string",
  "errorMessage": "{\"body\":{\"success\":false,\"error_type\":\"request\",\"details\":{\"errorCode\":4}}}",
  "trace": []
}

所以.*.* 确实有效,因为它对所有内容都有效,但即使是单个字母,如.*s.*,也会导致问题。 您需要修复的是您的 lambda 函数。 就我而言 - 我使用的是 nodeJS 函数和 aws-serverless-express。 aws-serverless-express 非常简单,因为它与 express 完美配合。但是,我使用的是:

awsServerlessExpress.proxy(server, event, context);

这足以返回正确的响应,但不足以使用 API 网关烦人的正则表达式。 相反,我将其更改为:

awsServerlessExpress.proxy(server, event, context, 'CALLBACK', function(param1, response){
    if (response.statusCode == 200) {
        //Success
        context.done(response.body);
    }
    else {
        //Fail
        context.fail(response.body);
    }
});

它就像一个魅力。现在我获取了响应正文并将其作为成功/失败返回。然后它将使用 lambda 函数知道如何使用的格式。

我希望这可以帮助其他人不要在这上面浪费 6 个小时!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-01-03
    • 2020-10-10
    • 2018-05-02
    • 2018-10-13
    • 2017-05-18
    • 2019-11-07
    • 2016-12-15
    • 2018-04-15
    相关资源
    最近更新 更多