Как фронтенд общается с бэкендом
Что проверяют
Видите ли вы за кнопкой в интерфейсе конкретный HTTP-запрос и умеете ли до него добраться. Для тестировщика это базовый навык локализации дефекта: чей баг, фронта или бэка. Дальше обычно спрашивают, как вы проверяете API отдельно от интерфейса и что делаете, когда в консоли ошибка CORS.
Как отвечать
Опишите механику, а не список модных слов:
- транспорт: HTTPS поверх TCP. Запрос это метод, путь, заголовки и тело, ответ это статус, заголовки и тело. Браузер сам добавляет
Originи куки; - формат: JSON почти всегда,
multipart/form-dataдля файлов,application/x-www-form-urlencodedв старых формах; - стиль API: REST с методами и статусами, GraphQL с одним адресом
POST /graphql, gRPC-Web во внутренних сервисах; - реальное время: WebSocket для двустороннего обмена, SSE для потока событий от сервера, поллинг там, где хватает опроса раз в N секунд;
- аутентификация: HttpOnly-кука с сессией либо
Authorization: Bearerс access-токеном и обновлением по refresh. Разница принципиальная: куку браузер отправляет сам, и отсюда растёт CSRF, а токен клиент подставляет руками.
Отдельно про статусы: 401 значит «не понял, кто вы», 403 «понял, но нельзя», 409 конфликт состояния, 422 не прошла валидация, 429 упёрлись в лимит. В GraphQL здесь ловушка: код почти всегда 200, а ошибка лежит в поле errors тела ответа.
Закончите инструментами: вкладка Network и Copy as cURL, Postman для прямых вызовов, Charles или Proxyman для перехвата, Local Overrides в DevTools, чтобы подменить ответ и увидеть, как интерфейс переживает 500 и пустой список.
Где спотыкаются
Проверяют всё только через интерфейс. Половина состояний (таймаут, 500, пустая коллекция, null вместо массива) кликами не воспроизводится, зато легко подменяется в перехватчике.
Считают CORS багом бэкенда всегда. Это правило браузера, лечится заголовками Access-Control-Allow-*, но виноват бывает и фронт, добавивший нестандартный заголовок и породивший предварительный OPTIONS.
Смотрят только на код ответа. Схема, типы полей и время ответа ломают интерфейс не хуже пятисотки, а в отчёте о баге без тела запроса и ответа разработчику работать не с чем.