我正在使用amazon api客户端gateway.it适用于所有请求和响应。现在我想添加一些超时,我试过这个:
apigClient.method(params, body, additionalParams)
.timeout(1000)
.then(function (result) {
//succcess part
}).catch(function (err) {
//error part
});`
但它确实有效。我从控制台收到此消息 “错误:apigClient.method(...)。超时不是函数”
答案 0 :(得分:0)
默认情况下,生成的JS客户端不支持自定义超时,但由于底层HTTP客户端支持请求对象中的客户端超时,因此您可以在客户端顶部添加自己的超时逻辑,只需极少的修改。
建议修改
diff --git a/apigClient.js b/apigClient.js
index 6f900b3..8977fb1 100755
--- a/apigClient.js
+++ b/apigClient.js
@@ -93,7 +93,8 @@ apigClientFactory.newClient = function (config) {
path: pathComponent + uritemplate('/').expand(apiGateway.core.utils.parseParametersToObject(params, [])),
headers: apiGateway.core.utils.parseParametersToObject(params, []),
queryParams: apiGateway.core.utils.parseParametersToObject(params, ['test']),
- body: body
+ body: body,
+ timout: 1000 // milliseconds
};
diff --git a/lib/apiGatewayCore/simpleHttpClient.js b/lib/apiGatewayCore/simpleHttpClient.js
index 3fb1e5a..6a37a93 100755
--- a/lib/apiGatewayCore/simpleHttpClient.js
+++ b/lib/apiGatewayCore/simpleHttpClient.js
@@ -73,7 +73,8 @@ apiGateway.core.simpleHttpClientFactory.newClient = function (config) {
method: verb,
url: url,
headers: headers,
- data: body
+ data: body,
+ timeout: request.timeout
};
return axios(simpleHttpRequest);
};
答案 1 :(得分:0)
我打电话给AWS支持,我得到了这个答案:
您好, 感谢您暂停与我们聊天!
以下是我们聊天的摘要: 您正在寻找一种方法来设置超时,同时从您的apigClient SDK向API网关>发出请求。无法在API网关中设置超时,因为API> Gateway作为任何类型集成的超时都有30秒的硬限制。 >有关详细信息,请参阅: http://docs.aws.amazon.com/apigateway/latest/developerguide/limits.html
但是,自动重试是从SDK实现的。有关带指数退避的>重试逻辑的详细信息,请参阅文档: http://docs.aws.amazon.com/general/latest/gr/api-retries.html
如果您有任何疑问,请与我联系。我很乐意为您提供帮助。
我希望这会有所帮助!!!