如何在API网关中设置响应模板以从错误中删除堆栈跟踪



我使用带有lambda集成的API网关。我在代码中抛出以下错误:

throw new Error('[400] xxxx')

我没有在API网关中配置任何响应模板,因此客户端将收到此错误:

{
"errorType": "Error",
"errorMessage": "[400] Customer's id 1234 doesnt exist.",
"trace": [
"Error: [400] Customer's id 1234 doesnt exist.",
"    at CustomerService.<anonymous> (/var/task/src/services/base/baseService.js:71:31)",
"    at Generator.next (<anonymous>)",
"    at fulfilled (/var/task/src/services/base/baseService.js:5:58)",
"    at processTicksAndRejections (internal/process/task_queues.js:97:5)"
]
}

我真正想让他们看到的是Customer's id 1234 doesnt exist.。如何使用响应模板从errorMessage中筛选出其他属性和括号[400]

您应该能够执行以下映射(需要映射到您创建的400状态代码(。您还需要";匹配";请求,可能类似于:.*[400]*:

#set($inputRoot = $input.path('$')) 
{
## Assign output properties to input properties
"message": "$inputRoot.errorMessage"
}

或者更简化:

{
"message": $input.json('$.errorMessage')
}

最新更新