我很难理解如何使用AWS API网关和Lambda函数(python)作为集成类型来设置正确的http状态代码和错误消息 .
我正在使用一个简单的例子,这里有详细信息:
Lambda function
def lambda_handler(event, context):
return_json = {}
if event["request-number"] == "":
raise Exception("Error request-number can't be empty")
elif event["request-number"] == "3":
raise Exception("Value not accepted")
else:
return_json = {"service-activated": "TRUE"}
return return_json
API / resourcetest POST
这与上面的lambda集成在一起 .
Goal :返回HTTP 400和带消息的正文当request-number =“”时,错误请求号不能为空 .
Implementation :
-
我创建了一个新的方法响应400
-
在lambda Error Regex中我映射了Error . *所以要捕获该字符串
-
在正文映射模板中:我创建了一个内容类型作为application / json和我使用过的模板(在设置之前有一个#标签符号,但这搞砸了这个页面的格式,所以我省略了它):
set($ inputRoot = $ input.path('$')){“message”:$ input.json('$ .errorMessage')}
- 我已经检查过方法响应中的http状态400(我有它)
Test 通过AWS API网关控制台,我已经测试过具有HTTP 400,并且正文中的消息错误请求编号不能为空 . 好我实现了我想要的:
我决定通过Postman和Chrome插件Restlet Client进行测试,我得到的是http状态200,错误信息格式不正确:
现在,这非常奇怪:从AWS API控制台一切都很好,从外部服务没有任何工作按预期 .
有没有人不得不处理类似的事情?
谢谢!
1 回答
您是否重新部署了API?