这应该是一个如此简单的问题,我不明白为什么它没有经过我所有的搜索(也许它只是漫长的一天)。
我有一个API网关API设置,我正在Body Mapping Template
为我的Integration Response
添加400 *错误组:请参阅图片 -
我想得到的是当前响应的StatusCode(因为这是一个400 *组 - 例如401/403/404等)。
我最接近的是通过这个网站:AWS help documentation我认为我可以使用像$context.statusCode
这样的东西 - 但没有运气。
我是疯了还是这不是经常需要的东西?
PS - 对正在调用的任何Lambda函数进行更改不是一种选择。
由于
答案 0 :(得分:0)
如果您要从服务器发送错误代码,则可以轻松映射它们。
我做了类似的事情,但我用了不同的技巧。我曾经从服务器发送自己的错误实体和代码。
您必须将来自服务器的错误实体和错误代码映射到来自amazon服务器的响应。我会试着解释一下我的意思。 Api Gateway不会自动将来自您自己的服务器的响应发送到客户端。您必须映射这些响应。例如,将200映射为SUCESS和响应实体将是默认的,即来自服务器的任何内容。
现在,我们默认管理成功响应但是错误代码和错误实体呢。你必须手动映射它们。
有两种方法可以做到这一点,
一个是手动的,去你的api。创建错误实体或模型。为每个响应代码手动映射它们。
这个使用swaggger, 解决方案是导入错误实体的swagger规范。将响应模板添加到swagger规范中,让亚马逊完成自己的工作。
我可以通过招摇来帮助你。这取决于你如何在亚马逊上设置api。
访问此内容,让amazon扩展成为一种招摇, http://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-swagger-extensions.html#api-gateway-swagger-extensions-integration-response
答案 1 :(得分:0)
目前在API网关中没有专用于集成响应状态代码的映射模板变量。
我们肯定会将此添加为功能请求。
目前,您只能在响应模板中对状态代码值进行硬编码。您可能需要定义通用状态代码(即" 4XX")或为要捕获的每个状态代码定义集成响应。虽然这看起来很乏味,但可以在Swagger模板中相对容易地管理。
目前,查看集成响应状态代码的唯一方法是通过CloudWatch Logs。
谢谢, Ryan /亚马逊API网关