API 网关 - 获取 StatusCode

API Gateway - Get StatusCode

这应该是一个如此简单的问题,但我不明白为什么我的所有搜索都没有出现(也许是漫长的一天)。

我有一个 API 网关 API 设置,我正在为我的 Integration Response 添加一个 Body Mapping Template 来处理 400* 错误组:见图 -

我只想得到当前响应的 StatusCode(因为这是一个 400* 组 - 例如 401 / 403 / 404 等)

我最接近的是通过这个网站:AWS help documentation 我以为我可以使用类似 $context.statusCode 的东西 - 但运气不好。

我是不是疯了,还是这不是经常需要的东西?

PS - 不能更改任何被调用的 Lambda 函数。

谢谢

如果您从服务器发送错误代码,则可以轻松映射它们。

我做过类似的事情,但我使用了不同的技巧。我曾经从服务器发送我自己的错误实体和代码。

您必须将来自服务器的那些错误实体和错误代码映射到来自亚马逊服务器的响应。我将尝试解释我的意思。 Api 网关不会自动将来自您自己的服务器的响应发送到客户端。您必须映射这些响应。例如,映射 200 作为 SUCESS 和响应实体将是默认的,即来自服务器的任何内容。

现在,我们默认管理成功响应,但错误代码和错误实体呢?您必须手动映射它们。

有两种方法可以做到这一点,

一个是手动的,去你的api。创建错误实体或模型。为每个响应代码手动映射它们。

这个用招摇, 解决方案是导入错误实体的 swagger 规范。将响应模板添加到 swagger 规范中,让亚马逊完成他们的工作。

swagger我可以帮你更多。这取决于您如何在亚马逊上设置 api。

访问这个亚马逊扩展招摇, http://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-swagger-extensions.html#api-gateway-swagger-extensions-integration-response

API 网关中目前没有专用于集成响应状态代码的映射模板变量。

我们一定会将其添加为功能请求。

目前您只能在响应模板中对状态代码值进行硬编码。您需要定义通用状态代码(即“4XX”)或为要捕获的每个状态代码定义集成响应。虽然这看起来很乏味,但可以在 Swagger 模板中相对轻松地进行管理。

目前查看集成响应状态代码的唯一方法是通过 CloudWatch Logs。

谢谢, 瑞安/亚马逊 API 网关