Один вызов API против нескольких

#node.js #backend

#node.js #серверная часть

Вопрос:

У меня есть процесс в серверной части, для завершения которого потребуется в среднем от 30 до 90 секунд.

Лучше ли, чтобы приложение font-end react выполняло ОДИН вызов API и ждало завершения серверной части, обработки и возврата данных. Или лучше, чтобы интерфейс выполнял несколько вызовов, скажем, каждые 2 секунды, чтобы проверить, завершен ли процесс, и вернуть результат?

Ответ №1:

Оба являются допустимыми подходами. Вы также можете сообщать об изменениях статуса с помощью websocket, поэтому нет необходимости в опросе.

Если вы хотите пойти по маршруту опроса, общая рекомендация заключается в:

  • Возврат 202 accepted из конечной точки вашего долго работающего процесса.
  • Также возвращает Link заголовок с URL-адресом, по которому можно прочитать статус процесса.
  • Затем клиент может следовать за этим клиентом и проверять его каждые x секунд.

Ответ №2:

Я думаю, что нехорошо делать один вызов API и ждать 30-90 секунд, чтобы получить ответ. Вместо этого немедленно отправьте ответ с указанием, что запрос выполнен успешно и будет обработан.

Теперь вы можете использовать веб-сокеты или библиотеку, подобную socket.ввод-вывод, чтобы сервер мог напрямую связываться с клиентом после завершения запрошенной обработки.

Множественные вызовы API для проверки того, выполнен ли сервер или сервер получил какое-либо новое сообщение, называются опросом и не очень эффективны, но это все еще требуется в старых браузерах, которые не поддерживают веб-сокеты. Сокет.io поддерживает автоматический опрос в старых браузерах.

Но, да, если вы хотите, вы можете выполнить несколько вызовов, чтобы проверить, завершен ли сервер обработкой, но я бы предпочел, чтобы сервер обменивался данными с клиентом, это лучше.