如何在apigClient aws中设置前端超时

时间:2017-07-28 21:32:30

标签: javascript angular amazon-web-services settimeout aws-api-gateway

我正在使用amazon api客户端gateway.it适用于所有请求和响应。现在我想添加一些超时,我试过这个:

        apigClient.method(params, body, additionalParams)
        .timeout(1000)
        .then(function (result) {
            //succcess part
        }).catch(function (err) {
            //error part
    });`

但它确实有效。我从控制台收到此消息  “错误:apigClient.method(...)。超时不是函数”

2 个答案:

答案 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

     

如果您有任何疑问,请与我联系。我很乐意为您提供帮助。

我希望这会有所帮助!!!