我已阅读无服务器和 AWS 的文档,但我只是没有获得响应模板。我有一个调用另一个模块的 lambda 函数,该模块将返回一个带有 info
和可能的 error
属性的对象。如果错误属性存在,我想抛出一个错误并使用API网关中的响应模板处理它。
serverless.yml(不确定 400 模式
中的内容)
functions:
onboard:
handler: api/onboard.onboard
events:
- http:
path: /onboard
method: post
integration: lambda
request:
passThrough: NEVER
schema:
application/json: ${file(models/onboard.schema.json)}
template:
application/json: $input.body
response:
200:
pattern: ''
400:
pattern: '.*"error".*' // WHAT GOES HERE???
template: $input.path('$.errorMessage')
lambda
const onboard = async (event) => {
// returns an object with info/error property
const response = await someModule();
/* example response
const response = {
error: 'some error',
name: event.name
};
*/
if(response.error) {
context.done(JSON.stringify(response));
}
return response;
};
最佳答案
我缺少 statusCodes
属性。
functions:
onboard:
handler: api/onboard.onboard
events:
- http:
path: /onboard
method: post
integration: lambda
request:
passThrough: NEVER
schema:
application/json: ${file(models/onboard.schema.json)}
template:
application/json: $input.body
response:
statusCodes:
200:
pattern: ''
400:
pattern: '.*"error".*'
template: $input.path('$.errorMessage')
关于node.js - 带 Lambda 集成的无服务器响应模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62536275/