如何处理在REST中完成某些事情所需的时间?

时间:2011-11-22 19:38:59

标签: java rest jersey

使用Jersey / JAX-RS我有一个get处理程序,其中包含将大文件复制到另一个位置的代码。我希望能够转到URL并能够看到复制的当前状态(即已过去的时间)。我该如何做到这一点?

2 个答案:

答案 0 :(得分:0)

在哪一边?发件人或收件人?

发件人可以公开链接或其他内容,作为请求的一部分。

你可以说有点像

POST接收器/ foo /传入

<incoming-foo>
    <link rel="status" uri="sender/foo/abc/status">
</incoming-foo>

接收者可能'201 Created'或'303 See Other'发送者到URI接收者/ foo / 1

此时,

GET receiver / foo / 1

可能只是返回提供的状态链接,或将其嵌入表示中:

<foo>
    <status>incoming</status>
    <link rel="status" href="sender/foo/abc/status" />
</foo>

GET sender / foo / abc / status

此时可能会返回“待定”或“排队”或类似的事情。

...

然后,发件人可以自由

PUT receiver / foo / 1

<foo>
    <content>...</content>
</foo>

在PUT期间,对服务的异步GET仍然可以从原始服务获取状态,原始服务现在可以“传输”或包括字节/总数等。

答案 1 :(得分:0)

如果我理解正确,我会假设,因为它是一个长时间运行的操作,初始POST返回202,使用Location标头或内容正文中的链接到复制操作的状态页面将是好方法。然后,客户端可以定期获取状态URL,当服务器完成复制时,GET可以使用303或某种机制返回链接以找到新创建的文件。

希望有所帮助!