我可以通过api网关集成响应头映射来设置单个http响应头。
在这种情况下,我给出了来自aws 的响应,并使用regex (“.http”)。以标识响应,并最终将其映射到我的头上,如下所示
Location: integration.response.body.errorMessage。
当我试图一次映射一个头时,这是可行的。
,但是我想在一个响应中同时设置位置和Cookie头。为此,我从aws lambda返回一个json,类似
context.fail(JSON.stringify({Location:"http://www.google.com",Cookie: vid="233kwer34343"})) 但我无法通过integration.response.body.errorMessage.Location和integration.response.body.errorMessage.Cookie映射头
可以通过使用context.succeed()而不是context.fail()来实现这一点。但这不是检查regex。我想检查regex的分类反应。
从lambda响应体映射多个响应头的最佳方法是什么?
发布于 2016-08-15 04:29:56
这并不是因为API网关或多个头。请注意,位置标头将被添加到响应仅为重定向(3xx)或后续处理(2xx)的请求。当返回代码是错误(4xx,5xx)等时,不会添加它。
这里有更多的细节- location
这就是为什么它对context.succeed()有效,而对context.fail()不起作用的原因。
发布于 2016-08-28 01:44:37
我不认为您可以使用context.fail使其工作。问题是传递给context.fail的参数是一个简单的字符串。然后将该字符串编码为json字符串,然后将其作为名为"errorMessage“的属性中的sting值传递给API。
来自Lambda的响应体看起来如下所示:{"errorMessage":"{\"Location\":\"http://www.google.com\",\"Cookie\":\“vid=‘233 kwer34343’\}”}
注意,errorMessage的值是带有转义特殊字符的字符串,而不是json对象。无法告诉头映射查看integration.response.body.errorMessage,将该字符串解析为json,并获取结果json对象的位置属性。
如果将值作为响应体而不是头返回,则可以使用速度解析errorMessage的内容,并将它们转换为您喜欢的任何响应体。不幸的是,头映射没有速度模板的完全处理能力/灵活性。
为什么在这种情况下需要调用context.fail?
如果调用context.done,可以返回json作为正文,例如:{“位置”:“http://www.google.com”,"Cookie":"vid='233kwer34343'"}
那么头映射就是integration.response.body.Location和integration.response.body.Cookie。
https://stackoverflow.com/questions/38848487
复制相似问题