如何取消REST api请求?

时间:2015-08-05 12:55:07

标签: java rest

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

2 个答案:

答案 0 :(得分:4)

首先,支持

POST /requests

将返回对请求状态的引用

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

然后添加对

的支持
PUT /requests/1234
{
    "status": "Canceled:"
}

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

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

答案 1 :(得分:0)

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

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

注意终止线程需要使用现在已经折旧的停止功能,因为在此过程中你不能中断线程或检查布尔值。

       @Deprecated
       public final void stop()

或者,您可以通过

使用HTTP请求调用的最长时间
    HttpConnectionParams.setConnectionTimeout(httpParams, 30000);