【发布时间】:2016-05-10 10:15:43
【问题描述】:
我是 AWS API Gateway 的新手,我将它与 AWS Lambda (Java) 一起使用。
显然,更改响应状态代码(更改为 4xx、5xx 等)的唯一方法是返回一个必须与资源的集成响应部分中的 Lambda 错误正则表达式匹配的字符串,或者抛出一个也应该包含与正则表达式匹配的消息,对吗?
但是如果我只能返回一个字符串,我该如何为响应实体提供更多详细信息?
以下是我的 RESTful API 用于返回的内容以及相应的错误状态代码:
{
"code": "123",
"message": "Invalid email address",
"path": "/email"
}
code 属性对调试或国际化 (i18n) 很有用,path 是要更正的字段。
有时我将它包装在一个“错误”JSON 对象中,有时我返回一个验证错误列表而不是只有 1 个错误,等等。我根据项目规范对其进行自定义。
如何使用 API Gateway 生成这样的响应实体?
谢谢。
编辑:感谢 kennbrodhagen 的建议,这就是我最终要做的事情:
1. 我将我的错误对象字符串化(使用 Jackson ObjectMapper)
2. 我抛出了一个RuntimeException 并带有字符串化错误作为消息
在集成响应中:
3. 我将我的错误的某些属性用于 Lambda 错误正则表达式
4. 我映射了这个模板
{ "error": $input.path('$.errorMessage') }
那么API响应(如果发生错误)就变成了
{ "error": {"code": "123", ... }}
目前非常基本,但比仅在响应中获取字符串要好。
【问题讨论】:
-
你能返回像 4XX 或 5XX 这样的 HTTP 状态吗?我正在为 Java 和 200 以外的状态代码而苦苦挣扎。如果您有时间,请在此处查看我的问题 stackoverflow.com/questions/45200322/…。谢谢!
标签: amazon-web-services aws-lambda aws-api-gateway