我有一个Reaction原生应用程序,它使用AWS Amplify库("aws-amplify":
"^6.0.13"
)来管理用户身份验证和令牌,并调用与Lambda集成的API Gateway.当我调用API Gateway中的任何端点时,它返回成功响应,我有一个包含数据、状态代码等的正确响应对象.然而,如果API返回错误,我在catch(error)
中看不到错误消息.例如,在对Lambda中的myapi/organizations
端点的POST调用中出现无效数据的情况下,我抛出以下代码
if (!isValidOrgName(orgName)) {
return new APIGatewayProxyResponseEvent()
.withStatusCode(HttpStatusCode.BAD_REQUEST)
.withBody(objectMapper.writeValueAsString(ErrorHelper.buildError(HttpStatusCode.BAD_REQUEST,
"Org name should not contain special characters.")));
如果我通过postman 发送请求,我会得到预期的回复
Bad Request 400
{
"error": {
"response": {
"statusCode": 400,
"body": "Org name should not contain special characters."
}
}
}
但是,如果我使用"AWS-Amplify/API"中的post
方法调用此终结点时,使用来自REACT-Native的无效数据,我不会检索到错误响应:
在apiUtils.js中:
createOrganization: async (body) => {
const restOperation = post({
apiName: API_NAME,
path: "/organizations",
options: {
body: body,
},
});
const response = await restOperation.response;
return await response.body.json();
}
在使用apiUtils.js的组件中:
async function createOrg() {
try {
const response = await apiUtils.createOrganization({
orgName: orgName,
});
setOrganization(response);
} catch (error) {
console.log('Error!');
console.log(JSON.stringify(error));
}
}
这console.log(JSON.stringify(error));
张照片
{"name":"UnknownError","underlyingError":{"name":"UnknownError","$metadata":{"httpStatusCode":400,"requestId":"57d5fb7c-5369-4ca7-9874-03b656a9926d","cfId":"xiwoKGxE_Zhbf3OS58Vm4UiY3O8Un87xyTdLQIHYBb1EjZqkdv4AJQ=="}},"$metadata":{"httpStatusCode":400,"requestId":"57d5fb7c-5369-4ca7-9874-03b656a9926d","cfId":"xiwoKGxE_Zhbf3OS58Vm4UiY3O8Un87xyTdLQIHYBb1EjZqkdv4AJQ=="}}
我看到它返回http 400,但我不知道我需要做什么才能从我的lambda中检索错误消息.