繁体   English   中英

如何取消REST api请求?

[英]How to Cancel a REST api request?

我使用基于REST API的系统,其中有一些请求需要很长时间才能完成。 我想给用户一个取消请求的选项。

首先,支持

POST /requests

这将返回对请求状态的引用

{
    "id": 1234,
    "self"": "/requests/1234"
    "status": "Running"
}

然后添加支持

PUT /requests/1234
{
    "status": "Canceled:"
}

如果请求尚未完成,那将允许客户取消请求。 如果请求是创建其他类型的资源,那么POST /requests执行POST /myResource ,而不是POST /myResource ,但仍返回状态对象,并在响应中使用指向/ requests的指针。

然后,客户端可以轮询/requests以查看/requests何时完成。

首先,您需要使用多个线程,因为您的程序在发送请求时将处于保持状态,因此您无法点击某些内容,直到它从保持状态恢复为止。

创建一个在后台调用其余API的线程,而不会挂起所有应用程序,并在单击按钮时终止该线程。

注意,为了终止线程,你需要使用现在已经折旧的stop函数,因为在这个过程中你不能中断线程或检查一个布尔值。

       @Deprecated
       public final void stop()

或者,您可以使用HTTP请求调用的最长时间

    HttpConnectionParams.setConnectionTimeout(httpParams, 30000);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM