为了从 AWS API GW 发送自定义错误代码,您应该在集成响应中使用响应映射模板。
您基本上为要从 API GW 返回的每个状态代码定义一个正则表达式。
步骤:
使用此配置,API GW 向客户端返回的 HTTP 返回码与 "selectionPattern" 中的正则表达式匹配。
最后我强烈建议使用 API GW 框架来处理这些配置,Serverless 是一个非常好的框架。
使用 Servereless,您可以如下定义模板(serverless 0.5 sn-p):
myResponseTemplate:
application/json;charset=UTF-8: |
#set ($errorMessageObj = $util.parseJson($input.path('$.errorMessage'))) {
"status" : $errorMessageObj.status,
"error":{
"error_message":"$errorMessageObj.error.message",
"details":"$errorMessageObj.error.custom_message"
}
}
responsesValues:
'202':
selectionPattern: '.*"status": 202.*'
statusCode: '202'
responseParameters: {}
responseModels: {}
responseTemplates: '$${myResponseTemplate}'
'400':
selectionPattern: '.*"status": 400.*'
statusCode: '400'
responseParameters: {}
responseModels: {}
responseTemplates: '$${myResponseTemplate}'
然后简单地从你的 lambda 返回一个 json 对象,如以下 python sn-p (你可以在 nodejs 中使用类似的方法):
def handler(event, context):
# Your function code ...
response = {
'status':400,
'error':{
'error_message' : 'your message',
'details' : 'your details'
}
}
return response
我希望这会有所帮助。
G.