gpt4 book ai didi

amazon-web-services - AWS : APIGateway custom response regex fails to match

转载 作者:行者123 更新时间:2023-12-04 10:29:59 29 4
gpt4 key购买 nike

如果用户在 header 中缺少必填字段,我将尝试发送 401 的 API 网关响应代码。我的 lambda 响应如下:

{
"status": "Unauthorized user",
"body": ["username"]
}

在 AWS API Gateway -> myAPI -> 资源 -> PUT 操作 -> 集成响应中,我有 2 个条目。
1. 对于默认 RegEx 模式(空白)-> 方法响应状态为 201 的所有成功
2.对于正则表达式匹配,如果我使用上面的JSON和下面的正则表达式使用regex或在线regex101.com,则存在完全匹配。
.*\"Unauthorized user\".*

enter image description here
enter image description here
但是,在 API 测试期间同样失败并显示以下消息
<date_time in UTC> : Endpoint response body before transformations: {"status": "Unauthorized user", "body": ["username"] }
<date_time in UTC> : Execution failed due to configuration error: No match for output mapping and no default output mapping configured. Endpoint Response Status Code: 200
<date_time in UTC> : Method completed with status: 500


有人遇到过这种情况吗?如果我有 201 和空白正则表达式,我最终会得到 201 ......无论未经授权或内部错误或错误请求。

最佳答案

这是您问题中的图片:
enter image description here
注意第一列的标题如何写 Lambda Error Regex ?这意味着 API Gateway 只会尝试将该正则表达式与 Lambda 返回的错误进行匹配。但是 API Gateway 如何知道 Lambda 返回的是真正的响应还是错误?它根据 Lambda return 是否知道这一点。编辑回复或 threw一个异常(exception)。
您的正则表达式不匹配,因为您返回了响应而不是将其作为异常抛出!
看一下这个:
当我的 Node.js Lambda 这样做时:

exports.handler = async (event) => {
const response = {
"status": "Unauthorized user",
"body": ["username"]
}
return response
}
我的 API 网关这样做:
enter image description here
但是当同一个 Lambda 这样做时:
exports.handler = async (event) => {
const error = {
"status": "Unauthorized user",
"body": ["username"]
}
throw JSON.stringify(error)
}
API 网关执行以下操作:
enter image description here

关于amazon-web-services - AWS : APIGateway custom response regex fails to match,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60460101/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com