2017-01-16 102 views
0

这应该是这样一个简单的问题,我不明白为什么它没有通过我所有的搜索(可能只是漫长的一天)。API网关 - 获取状态代码

我有一个API网关API设置,我增加了Body Mapping TemplateIntegration Response为400 *错误组:看图片 -

enter image description here

所有我想获得是对的StatusCode目前的反应(因为这是一个400 *组 - 例如401/403/404等)

最接近的是我通过这个网站:AWS help documentation,我想我可以使用像$context.statusCode - 但没有运气。

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

PS - 对所调用的任何Lambda函数进行更改不是一个选项。

感谢

回答

0

有专用的合并响应状态代码API网关目前没有映射模板变量。

我们肯定会将此作为功能请求添加。

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

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

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

+0

那么,那不是我期待的答案......我不明白为什么所有的功能都可以允许正则表达式状态码是允许的,但是你不能捕获它是什么statusCode。无论如何,感谢您的反馈,让我们希望尽早实施,而不是晚些时候。 – Hexie

0

如果你是从你的服务器发送错误代码,那么你可以很容易地将它们映射。

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

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

现在,我们可以管理默认的成功响应,但错误代码和错误实体又如何呢?你必须手动映射它们。

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

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

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

我可以帮助你更多的招摇。这取决于你如何在亚马逊上设置你的api。

参观此亚马逊extenstions招摇, http://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-swagger-extensions.html#api-gateway-swagger-extensions-integration-response

+0

感谢Ajinkya但正如我所说,我不想进行任何拉姆达功能和服务器调用,这是假设的状态未知。我假设必须有一种方法,通过标题或其他来获得相同的回应。如果小提琴或邮递员可以做到这一点,那么当然这并不难,它可能只是我遗漏的一个物业 – Hexie

+0

P.S.我也想避免为每个已知的状态类型设置不同的响应,这对大APIs来说是荒谬的 – Hexie