Какие данные клиентское приложение отправляет на backend-сервер?

«Какие данные клиентское приложение отправляет на backend-сервер?» — вопрос из категории Архитектура, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Клиент (браузер, мобильное приложение, другой сервис) отправляет на backend данные в рамках HTTP(S)-запросов или через другие протоколы. Основные виды отправляемых данных:

1. HTTP-запросы с их компонентами:

  • Метод и эндпоинт: Определяют действие (GET, POST, PUT, DELETE, PATCH) и цель запроса (/api/v1/users).
  • Заголовки (Headers): Метаданные запроса.
    • Content-Type — формат тела запроса (например, application/json).
    • Authorization — токен или данные для аутентификации (например, Bearer <JWT>).
    • User-Agent, Accept, Accept-Language.
  • Тело запроса (Body): Актуально для POST, PUT, PATCH.
    • JSON — самый распространенный формат для REST API.
      {
      "name": "Alice",
      "email": "alice@example.com",
      "active": true
      }
    • Form Data (application/x-www-form-urlencoded или multipart/form-data) — для отправки форм и файлов.
  • Параметры строки запроса (Query Parameters): Для GET-запросов, фильтрации, пагинации.
    • Пример: GET /api/products?category=books&page=2

2. Файлы: Отправляются через multipart/form-data, часто как часть формы.

3. Состояние сессии:

  • Cookies — автоматически отправляются браузером с каждым запросом к домену.
  • Токены — обычно в заголовке Authorization.

4. Для real-time взаимодействия:

  • Сообщения по WebSocket — после установки соединения клиент и сервер обмениваются данными в реальном времени.

Полный пример POST-запроса (клиент -> backend):

POST /api/auth/login HTTP/1.1
Host: api.example.com
Content-Type: application/json
Authorization: Bearer eyJhbGciOiJIUzI1NiIs...

{
  "username": "johndoe",
  "password": "my_secure_password_123"
}