[英]AWS API Gateway Header and Body Mappings in Integration Response
我正在尝试在集成响应中为API网关端点正确设置正文映射和标头映射。
在我们的Lambda中,我们有
if (response.statusCode == 200) {
context.succeed(output);
} else if (response.statusCode == 206) {
var paginationObject = {
errorType : "PartialContent",
errorCode : 206,
detailedMessage : "PartialContent Returned",
stackTrace : [],
data : {
output
}
};
context.fail(JSON.stringify(paginationObject));
}
然后,我使用。* PartialContent。*的Lambda错误正则表达式在集成响应中获取此内容,并将我的人体贴图模板作为
#set($allParams = $input.params())
#set($body = $util.parseJson($input.json('$.errorMessage')))
$body
这为我提供了正确的HTTP状态代码和JSON输出,但是主体中的数据过多。 响应如下所示:
{
"errorType":"PartialContent",
"errorCode":206,
"detailedMessage":"PartialContent Returned",
"stackTrace":[],
"data":{
"output":{
"status":206,
"bodyJson":[{"call_date":"2017-08-19 18:17:21"}],
"headers":{"date":"Thu, 02 Nov 2017 18:36:52 GMT",
"server":"Apache",
"x-pagination-page-size":10}
}
}
}
我希望标题实际上在响应中显示为标题,并且我希望正文只是bodyJson内部的内容
我试图将主体映射模板更改为使用$ body.data.output.bodyJson ,但是当我这样做时,主体完全为空。 我还在Header Mappers中设置了headers,同时尝试了integration.response.body.headers.x-pagination-page-size和Integration.response.header.x-pagination-page-size,但两次都是即使我可以在JSON输出中看到正确的值,也还是空白。
我如何只将bodyJson元素作为响应的主体输出? 以及如何正确获取标头映射?
您是否尝试在集成响应中使用Lambda错误正则表达式 ? 例如:
。* “状态”:400 *
人体贴图模板 :
#set ($errorMessageObj = $util.parseJson($input.path('$.errorMessage')))
{
"status" : "$errorMessageObj.status",
"errorType" : "$errorMessageObj.errorType",
"message" : "$errorMessageObj.errorMessage"
}
我在Lamda中创建了一个错误函数 :
function error(status, errorType, errorMessage, callback){
callback(JSON.stringify({
status: status,
errorType: errorType,
errorMessage: errorMessage
}));
}
用法:
error(404, "Not Found", "Resource is not found", callback);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.