Aws lambda Api网关304响应与上次修改的标头
我想用最后修改的头响应304响应 首先,我使用错误响应来实现 Handler.jsAws lambda Api网关304响应与上次修改的标头,aws-lambda,aws-api-gateway,serverless-framework,Aws Lambda,Aws Api Gateway,Serverless Framework,我想用最后修改的头响应304响应 首先,我使用错误响应来实现 Handler.js module.exports.handler = function(event, context, cb) { const UpdateDate = new Date(); return cb("304 Not Modified", { "Last-Modified": UpdateDate, "body":{ "message": {} } }); }; ret
module.exports.handler = function(event, context, cb) {
const UpdateDate = new Date();
return cb("304 Not Modified", {
"Last-Modified": UpdateDate,
"body":{
"message": {}
}
});
};
return cb({
"status" : "304 Not Modified",
"Last-Modified": UpdateDate
), null);
端点中的s-function.json
"responses": {
"304 Not Modified.*": {
"statusCode": "304",
"responseParameters": {
"method.response.header.Last-Modified": "integration.response.body.Last-Modified"
},
"responseModels": {
"application/json;charset=UTF-8": "Empty"
},
"responseTemplates": {
"application/json;charset=UTF-8": "$input.json('$.body')"
}
},
"default": {
"statusCode": "200",
"responseParameters": {
"method.response.header.Cache-Control": "'public, max-age=86400'",
"method.response.header.Last-Modified": "integration.response.body.Last-Modified"
},
"responseModels": {
"application/json;charset=UTF-8": "Empty"
},
"responseTemplates": {
"application/json;charset=UTF-8": "$input.json('$.body')"
}
}
}
但是,我在Lambda doc上找到了
如果提供了错误,则将忽略回调参数
所以,这不起作用
是否有任何解决方案来响应带有标题的304响应
更新:
是否可以在s函数中返回错误对象并映射响应304?下面的代码无法映射到304
s-funtion.json
"responses": {
".*304 Not Modified.*": {
"statusCode": "304",
"responseParameters": {
"method.response.header.Cache-Control": "'public, max-age=86400'",
"method.response.header.Last-Modified": "integration.response.body.errorMessage.Last-Modified"
}
}
Handler.js
module.exports.handler = function(event, context, cb) {
const UpdateDate = new Date();
return cb("304 Not Modified", {
"Last-Modified": UpdateDate,
"body":{
"message": {}
}
});
};
return cb({
"status" : "304 Not Modified",
"Last-Modified": UpdateDate
), null);
我也试过这个。它可以映射到304,但标题无法获取“integration.response.body.errorMessage.Last Modified”
我尝试使用$util.parseJson,但不使用responseParameter
指定的映射表达式无效:$util.parseJson($input.path('$.errorMessage'))。上次修改
return cb(JSON.stringify({
"status" : "304 Not Modified",
"Last-Modified": UpdateDate
}), null);
要在API中返回状态304,需要从Lambda函数中抛出一个错误。可以从Lambda函数返回错误消息中的“Last Modified”值,并将其路由到API响应中的“Last Modified”头 有关详细信息,请参阅选项2 谢谢,
Ryan请查看选项2中Ryan的链接。您的更新实际上没有返回错误。@BobKinney它返回了一个错误。在cloudWatch日志中:{“errorMessage”:“{\”状态\“:\”304未修改\“,\”上次修改\“:\”2016-07-22T01:58:10.857Z \“}”侧注,根据W3,304不应返回响应主体。请参考您的第一个示例。谢谢,最后我只在响应中输入304状态代码和空正文来实现缓存控制。并在200响应中设置最后修改的报头。