Какой опыт с библиотеками для работы с API, например Axios?
Что проверяют
Понимаете ли вы, что даёт Axios поверх fetch, и умеете ли построить слой работы с API, а не только вызвать axios.get. Следом обычно спрашивают про обновление токена при 401 и отмену запросов.
Как отвечать
Расскажите, как в вашем проекте устроен сетевой слой, и сравните с fetch:
- экземпляр:
axios.create({ baseURL, timeout })вместо глобальных настроек, свой экземпляр на каждый бэкенд; - интерсепторы: в request добавляют заголовок авторизации, в response обрабатывают 401. Для обновления токена нужен один общий промис refresh, иначе пять параллельных запросов пошлют пять обновлений;
- ошибки: Axios отклоняет промис на любой статус вне 2xx (настраивается
validateStatus),fetchтак не делает. Разбирайте ошибку черезaxios.isAxiosError: естьerror.response, значит сервер ответил, есть толькоerror.request, значит ответа не было; - отмена:
AbortControllerи параметрsignal.CancelTokenустарел, в новом коде ему не место; - отличия от fetch: JSON в обе стороны без ручного разбора, таймаут одной опцией, прогресс отправки через
onUploadProgress. Уfetchтаймаут делается черезAbortSignal.timeout(), а прогресса отправки нет; - типы:
axios.get<User>()только утверждает тип и ничего не проверяет. Если ответу нельзя доверять, валидируйте схемой, например zod.
Поверх сетевого слоя обычно стоит TanStack Query, RTK Query или SWR: кэш, дедупликация, повторы, состояние загрузки. На сервере в Next.js App Router чаще берут fetch: Next добавляет ему опции кэширования и ревалидации, а Axios их не знает.
Где спотыкаются
Ловят ошибку в try/catch и пишут её в console.error. Пользователь видит пустой экран, а нужно состояние ошибки в UI и различие между 4xx и сбоем сети.
Пишут refresh в интерсепторе без очереди. Получается гонка: токен обновляется несколько раз, а часть запросов уходит со старым.
Говорят, что Axios «лучше fetch», без условий. Сильнее сказать, что для пары запросов хватит fetch, а Axios окупается, когда нужны интерсепторы, единый обработчик ошибок и прогресс отправки.