Как справиться со временем, необходимым, чтобы закончить что-то в REST? - PullRequest
0 голосов
/ 22 ноября 2011

Использование Jersey / JAX-RS У меня есть обработчик get, который содержит код для копирования большого файла в другое место.Я хочу иметь возможность перейти на URL-адрес и увидеть текущее состояние копирования (т. Е. Истекшее время).Как мне это сделать?

Ответы [ 2 ]

0 голосов
/ 23 ноября 2011

Если я вас правильно понимаю, я бы предположил, что это длительная операция, при которой исходный POST возвращает 202, с заголовком Location или ссылкой в ​​теле содержимого на страницу состояния операции копирования. хороший подход. Затем клиент может периодически получать URL-адрес статуса, и, когда сервер завершает копирование, GET может вернуть ссылку, используя 303 или какой-либо механизм, чтобы найти вновь созданный файл.

Надеюсь, это поможет!

0 голосов
/ 22 ноября 2011

С какой стороны? Отправитель или получатель?

Отправитель может предоставить ссылку или что-то в рамках запроса.

Возможно, вы могли бы сделать что-то вроде

POST получатель / foo / входящий

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

получатель может '201 Created' или '303 See Other' отправитель получателю URI / foo / 1

в это время,

ПОЛУЧИТЬ приемник / foo / 1

может просто вернуть указанную ссылку статуса или встроить ее в представление:

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

GET sender / foo / abc / status

Может вернуться в это время "в ожидании" или "в очереди" или что-то в этом роде.

...

Тогда отправитель свободен для

PUT-приемник / foo / 1

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

Во время PUT асинхронный GET для сервисов все еще может получать статус от исходной службы, которая теперь может «передавать» или включать байты / общее количество и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...