2014-02-17 4 views
1

У нас есть REST API, в рамках которого мы предоставляем клиенту несколько API для рисования аналитических отчетов. Некоторые очень большие запросы могут занять от 5 до 10 минут и могут возвращать ответы в диапазоне от 50 до 150 мб.API Ответы с большими наборами результатов

На данный момент ожидается, что клиент ждет ответа. Мы не уверены в том, что это действительно лучшая практика или если такие сложные/большие запросы & следует рассматривать другим способом. Любые советы по лучшим передовым методам будут оценены, пожалуйста?

Примечание: API будет вызываться автоматизированными процессами с большими отчетами, поэтому мы не уверены, что стандартная разбивка на страницы является эффективной или желательной.

+1

Вы можете сделать это в асинхронном режиме или методы пакетной обработки использования. – thefourtheye

ответ

1

Если вам нужно обработать долговременную задачу, с клиентской точки зрения всегда лучше обрабатывать ее асинхронно следующим образом.

Клиент отправляет запрос POST, сервер создает новый ресурс (или может начать немедленную обработку фона) и возвращает HTTP 202 Принимается с представлением задачи (например, статус, время начала, ожидаемое время окончания и т. П.). наряду с URL-адресом задачи в заголовке Content-Location, чтобы клиент мог отслеживать его.

Клиент может отправить запрос GET указанному URL-адресу, чтобы получить статус. Сервер может возвращать следующие ответы.

еще не сделано

сервер возвращает HTTP 200 OK вместе с ресурсом задачи, так что клиент может проверить статус.

Совершено

сервер возвращает HTTP 303 See Other и Расположение заголовок с URL ресурса, который показывает результаты выполнения задач.

Ошибка

сервер возвращает HTTP 200 OK с ресурсом задачи, описывающей ошибку

Смежные вопросы