Как проходит запрос
Теперь свяжем всё вместе. Проследим за нашим пользователем, который нажимает «Сохранить профиль», через каждый кусок, с которым вы только что познакомились. Это самая полезная ментальная модель в книге; если усвоить одну диаграмму, пусть это будет эта.
1. ПОЛЬЗОВАТЕЛЬ нажимает «Сохранить профиль»
│
▼
2. FRONTEND (HTML-форма, JavaScript читает значения)
│ отправляет HTTP-запрос: "POST /profile { name: 'Ada' }"
▼
3. ХОСТИНГ направляет запрос к вашему работающему BACKEND
│
▼
4. BACKEND
├─ этот пользователь вошёл? (нет → ответ 401, стоп)
├─ данные валидны? (нет → ответ 400, стоп)
└─ всё в порядке → сохранить в БАЗУ ДАННЫХ
│
▼
5. БАЗА ДАННЫХ записывает строку, подтверждает обратно BACKEND
│
▼
6. BACKEND отвечает: "200 OK { saved: true }"
│
▼
7. FRONTEND получает ответ, обновляет DOM
│ («Профиль сохранён ✓») — пользователь это видит
▼
ГОТОВО
Пройдитесь по тому, что сделал каждый слой: frontend собрал ввод и отправил его; хостинг доставил запрос в нужное место; backend применил правила (вход в систему, валидация) и принял решение; база данных сделала это постоянным; а ответ протёк весь путь обратно, чтобы frontend мог обновить экран. Каждое приложение — это вариации на тему этого цикла, выполняемого тысячи раз в секунду.
Обратите внимание, что все проверки происходят в backend, никогда во frontend — правило из первого раздела в действии: frontend для пользователя, backend для истины. Когда вы знаете, где происходит каждый шаг, вы можете описать функцию точно («провалидируй email на backend перед сохранением») вместо размытого («сделай, чтобы форма работала») — а точность — это вся игра целиком.