ПРО АНАЛИТИКА | СИСТЕМНЫЙ АНАЛИТИК | АЛЕКСАНДР НЕЗДЕМИНА
Образование · 17 августа 2026 г.
КАК СДЕЛАТЬ АСИНХРОН ЧЕРЕЗ HTTP? — 17 августа 2026 г. в 07:37:37.626
КАК СДЕЛАТЬ АСИНХРОН ЧЕРЕЗ HTTP? Недавно проходил собес на лида. И знаете что? Не важно какого уровня вакансия, вопросы могут быть примерно одинаковые. Я сейчас активно готовлю ответы на файл со 100 вопросами и каково же было мое удивление, когда на этом собесе мне попался вопрос прямо оттуда. Вопрос такой: как можно сделать асинхронное взаимодействие через HTTP? И ведь не для всех очевидно, что через HTTP вообще можно реализовать асинхрон, поэтому про это и предлагаю сегодня подробнее. ➖➖➖ Начнем с самого частого случая. Представьте, что вы проектируете выгрузку тяжелого отчета. Пользователь нажимает кнопку заказать, а отчет собирается минуту, а то и две. Синхрон тут нам точно не подходит, потому что такой запрос точно свалится с ошибкой по таймауту. И поэтому нам нужно делать асинхрон. Самый простой способ это сделать polling. Как он работает? Сервер не заставляет клиента ждать, а сразу отвечает кодом 202 Accepted, и отдает инфо, откуда забрать отчет. Это может быть id из системы или URL в заголовке Location. Дальше клиент по этой ссылке или id периодически опрашивает сервер и узнает статус готовности. И когда документ будет готов, то мы его заберем. Это самый простой способ забабахать асинхрон через HTTP, но у него есть минус в виде паразитной нагрузки. Поэтому, когда мы его выбираем, нам надо помнить про частоту ретраев с которыми мы ходим с запросом. ➖➖➖ Как мы можем реализовать еще? Особенно если у нас нет клиента, а общается сервер с сервером? В этом случае мы можем использовать webhook. В этом кейсе не клиент нас опрашивает, а мы сами дергаем его webhook, как только отчет готов. Главное знать, что нужно дернуть. ➖➖➖ Еще один вариант - это SSE. В этом случае также у нас идет работа через HTTP, но сервер сам, без всякого запроса, постоянно шлет клиенту свежие данные. Также еще можно сказать про websocket, но там только само соединение устанавливается по HTTP, но дальше происходит подмена протокола. Вот такие 4 способа. ➖➖➖ Что важно при ответе на собесах, на мой взгляд, если мы знаем про все это применение? Если вы собеседуетесь на уровень мидлл+, то важно не только ответить, какими способами можно реализовать, но еще добавить контекста: в каких кейсах какой паттерн стоит использовать. И тогда все будет в шоколаде. Вот такие дела. ➖➖➖ Кстати, напоминаю, что уже на следующей неделе стартуют продажи курса "ИНТЕГРАЦИИ И ПРОЕКТИРОВАНИЕ API". Кто хочет попасть, не забудьте добавиться в лист предзаписи на сайте, на следующей неделе мой менеджер Лиза уже начнет всем писать ❤️

