2016-07-15 125 views
2

我想从处理程序返回值到API网关响应标头。Lambda和API网关映射

Handler.js

module.exports.handler = function(event, context, cb) { 
    const UpdateDate = new Date(); 
    return cb(null, { 
    body: { 
     message: 'test' 
    }, 
    header: { 
     Last-Modified: UpdateDate 
    } 
    }); 
}; 

S-function.json在 “端点”

"responses": { 
    "400": { 
     "statusCode": "400" 
    }, 
    "default": { 
     "statusCode": "200", 
     "responseParameters": { 
     "method.response.header.Cache-Control": "'public, max-age=86400'", 
     "method.response.header.Last-Modified": "integration.response.body.header.Last-Modified" 
     }, 
     "responseModels": { 
     "application/json;charset=UTF-8": "Empty" 
     }, 
     "responseTemplates": { 
     "application/json;charset=UTF-8": "$input.json('$.body')" 
     } 
    } 
    } 

这可以工作。但我想知道如何使用“integration.response.header.Last-Modified”。我的处理程序回调formate是否错误?

编辑: S-function.json在 “端点”

“integration.response.header.Last修饰” 这是行不通的。 我想知道具体的处理返回合成将数据传递给“integration.response.header.Last-Modified”。

"responses": { 
    "400": { 
     "statusCode": "400" 
    }, 
    "default": { 
     "statusCode": "200", 
     "responseParameters": { 
     "method.response.header.Cache-Control": "'public, max-age=86400'", 
     "method.response.header.Last-Modified": "integration.response.header.Last-Modified" 
     }, 
     "responseModels": { 
     "application/json;charset=UTF-8": "Empty" 
     }, 
     "responseTemplates": { 
     "application/json;charset=UTF-8": "$input.json('$.body')" 
     } 
    } 
    } 
+0

这看起来乍一看正确的,但我不明白你的问题。你是说这个*不工作吗?如果不是,你看到了什么行为? –

+1

我想使用“integration.response.header.Last-Modified”,我不知道lambda归还合成。 – Jim

回答

0

您的lambda函数的所有输出都返回到响应正文中,因此您需要将响应正文的一部分映射到您的API响应标头。

module.exports.handler = function(event, context, cb) { 
    const UpdateDate = new Date(); 
    return cb(null, { 
     message: 'test', 
     Last-Modified: UpdateDate 
    }); 
}; 

会产生有效载荷 “{” 消息 “: ”测试“, ”上次修改“:” ... “}”

在这种情况下,你就可以用“integration.response.body。 Last-Modified“作为映射表达式。作为一个附注,在响应主体中命名“body”和“header”可能会使映射表达式混淆读取。

感谢, 瑞安

+0

谢谢!这对我很有帮助。 – Jim