Lambda中的microservice-http-endpoint启动程序函数包含以下代码以结束该函数:
const done = (err, res) => callback(null, {
statusCode: err ? '400' : '200',
body: err ? err.message : JSON.stringify(res),
headers: {
'Content-Type': 'application/json',
},
});
在编写了一个只有几个端点的Lambda API之后,我发现自己在所有函数中都使用了相同的代码。我的第一直觉是把它放到一个模块中以使代码更加DRY但如果我这样做,callback()
函数将超出范围。
我只从我的函数返回JSON,所以这将是我特定用例中唯一可能的Content-Type。
人们如何处理这个问题?是否有一种实用(优雅)的方式以某种方式封装此代码?或者也许是更好的选择?
答案 0 :(得分:1)
只需嵌套函数:
const regularize = (awsCallback) => (err, res) => {
awsCallback(...perYourAboveCode(err, res))
};
处理程序可能如下所示:
const myHandler = (event, context, awsCallback) => {
const callback = regularize(awsCallback);
};