【问题标题】:How to overcome Timeout in REST API? [duplicate]如何克服 REST API 中的超时? [复制]
【发布时间】:2019-03-22 21:37:47
【问题描述】:

我有一个需要 10 秒执行并返回 10,000 条数据记录的存储过程。 但是每次我调用 API 时,调用都会导致连接超时。 如果我能够增加 REST 请求的超时时间,那么它会正常工作。

我的主要问题是:如果发生超时,如何在 AJAX 请求中获取超时错误,以便向用户显示发生了超时?每次 AJAX 调用失败并且我没有收到指示发生超时或未找到数据的错误。

【问题讨论】:

  • 你试过我发布的答案了吗?我相信它会达到你想要的效果。

标签: ajax rest api


【解决方案1】:

您可以执行以下操作来检测超时错误并在首页上显示给用户:

$.ajax({
    url: "/ajax_json_echo/",
    type: "GET",
    dataType: "json",
    timeout: 1000,
    success: function(response) { alert(response); },
    error: function(xmlhttprequest, textstatus, message) {
        if(textstatus==="timeout") {
            alert("got timeout");
        } else {
            alert(textstatus);
        }
    }
});​

【讨论】:

  • 我试过但在 ajax 失败我会得到这样的响应文本。我如何从 $.parseJSON(xhr.responseText) 中获得“developerMessage”;然后我将使用该消息进行验证。 "{"errorCode":500,"message":"我们有一个错误。","developerMessage":"执行超时。在操作完成之前超时时间已过或服务器没有响应。","moreInfo":"supershuttle.com"}"
  • 嗯,所以你设法得到你想要的。如果我的回答最有帮助,你能接受吗?
  • 它现在可以工作了。谢谢
  • @MumbaiKandivali,如果我的回答最有帮助,你能接受吗?
【解决方案2】:

我认为如果您正在使用 rest api,特别是如果您是客户端,最好保持超时。我观察到类似的连接超时问题,问题通过放置一段代码connection.setConnectTimeout(5000);将在 5 秒后超时。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-21
    • 1970-01-01
    • 2016-04-15
    • 1970-01-01
    相关资源
    最近更新 更多