Асинхронное создание ресурса с OData - PullRequest
0 голосов
/ 10 декабря 2018

В REST API, если у меня есть ресурс, создание которого может занять значительное время, я могу вернуть временный ресурс с кодом состояния 202. Затем клиент может опрашивать этот временный ресурс до тех пор, пока фактический ресурс не будет создан, и перенаправиться на него, когда онсделано (с кодом состояния 303).Нечто подобное описано в http://restcookbook.com/Resources/asynchroneous-operations/.

Существует ли какой-либо стандартизированный способ создания таких ресурсов в OData?

1 Ответ

0 голосов
/ 11 декабря 2018

Асинхронные запросы (кратко) упоминаются в спецификации OData V4 .Вероятно, стоит прочитать подробности, но вкратце:

Клиент делает запрос с заголовком Prefer: respond-async.Затем сервер может ответить ответом HTTP 202, как вы описали.Этот ответ содержит заголовок Location, который указывает на «ресурс монитора состояния».

Когда клиент отправляет запрос на ресурс монитора состояния, существует 3 основных ответа:

  1. HTTP 202: операция еще не завершена.
  2. HTTP 200: операция завершена.Этот ответ должен также включать заголовок AsyncResult, который содержит код состояния операции (например, 200 для успеха, 5xx для ошибки и т. Д.).В теле этого ответа содержится результат операции.
  3. HTTP 404:
    • Операция не существует.
    • Операция была отменена.
    • Операция могла существовать, но клиент слишком долго ждал, прежде чем запросить статус (также может быть HTTP 410 (Gone)).

Я не знаю ни одной структуры, котораяреализует это поведение, поэтому вам, вероятно, придется программировать его самостоятельно.

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