typescript - 如何在 openapi api-gateway 中正确解析 lambda 响应中的错误代码
我正在使用 OpenAPI 在 API 网关中为一个 Lambda 设置端点。这个 Lambda 需要能够返回 400/500 错误代码以处理内部错误/错误请求。为此,我尝试将该端点的 OpenAPI JSON 文档中的 x-amazon-apigateway-integration 部分格式化如下:
"x-amazon-apigateway-integration": {
...
"responses": {
".*statusCode"":400.*": {
"statusCode": "400",
"responseTemplates": {
"application/json": "#set ($errorMessageObj = $util.parseJson($input.path('$.errorMessage'))) \n{ \"message\" : \"$errorMessageObj.message\"}"
}
}
}
}
我的 Lambda 的原始输出(即转换之前)看起来像这样:
"{\"statusCode\":400,\"message\":\"Invalid request parameters\"}"
我的期望是最终响应的错误代码为 400,并且返回给我的客户端的对象将是
{
"message": "Invalid request parameters"
}
但是我得到的是完整的未转换的响应对象,响应码为200(默认值)。我参考了这篇 AWS 博客文章,在文章底部有我尝试使用的正则表达式。它通过了正则表达式解析器,所以我不明白为什么我仍然得到默认响应。我正在使用 OpenAPI v3。我到底漏掉了什么?
答案#1
我弄明白了。在 lambda 中,你需要抛出一个错误,并带上你希望解析的响应代码。如果你只是返回它,它会假设执行是正确的。