Асинхронные запросы (кратко) упоминаются в спецификации OData V4 .Вероятно, стоит прочитать подробности, но вкратце:
Клиент делает запрос с заголовком Prefer: respond-async
.Затем сервер может ответить ответом HTTP 202
, как вы описали.Этот ответ содержит заголовок Location
, который указывает на «ресурс монитора состояния».
Когда клиент отправляет запрос на ресурс монитора состояния, существует 3 основных ответа:
HTTP 202
: операция еще не завершена. HTTP 200
: операция завершена.Этот ответ должен также включать заголовок AsyncResult
, который содержит код состояния операции (например, 200 для успеха, 5xx для ошибки и т. Д.).В теле этого ответа содержится результат операции. HTTP 404
: - Операция не существует.
- Операция была отменена.
- Операция могла существовать, но клиент слишком долго ждал, прежде чем запросить статус (также может быть
HTTP 410 (Gone)
).
Я не знаю ни одной структуры, котораяреализует это поведение, поэтому вам, вероятно, придется программировать его самостоятельно.