1. Введение в Back-end: архитектура клиент-сервер и протокол HTTP
Введение в Back-end: архитектура клиент-сервер и протокол HTTP
Добро пожаловать в мир Back-end разработки. Если вы когда-либо задумывались, что происходит после того, как вы нажимаете кнопку «Войти» на сайте, или как приложение на вашем телефоне узнает погоду на завтра, вы попали по адресу. Эта статья открывает наш курс, и сегодня мы разберем фундамент, на котором держится весь современный интернет.
Что такое Back-end?
Любое современное веб-приложение можно сравнить с айсбергом или театральной сценой.
Front-end (клиентская часть) — это то, что вы видите: кнопки, анимации, тексты, изображения. Это верхушка айсберга или актеры на сцене. Этим занимается браузер на вашем компьютере или телефоне.
Back-end (серверная часть) — это то, что скрыто под водой или за кулисами. Это механизмы, базы данных, логика обработки заказов, шифрование паролей и взаимодействие с банковскими системами. Пользователь никогда не видит код бэкенда, но именно он заставляет приложение работать.
!Иллюстрация разделения веб-приложения на видимую и невидимую части.
Архитектура Клиент-Сервер
Чтобы понять, как взаимодействуют эти две части, нам нужно разобрать концепцию архитектуры клиент-сервер. Это самая популярная модель взаимодействия в сети.
Давайте используем классическую аналогию — ресторан.
В этой схеме интернет — это зал ресторана, а протоколы передачи данных — это правила этикета и язык, на котором общаются посетитель и персонал.
Почему это разделение важно?
* Безопасность: Мы не пускаем клиентов на «кухню» (сервер), чтобы они не могли украсть рецепты или испортить продукты (базу данных). * Масштабируемость: Один сервер может обслуживать тысячи клиентов одновременно, точно так же, как одна кухня кормит полный зал гостей. * Централизация: Если мы обновим меню (данные) на сервере, оно обновится сразу у всех клиентов.
Протокол HTTP: Язык общения
Чтобы Клиент и Сервер понимали друг друга, они должны говорить на одном языке. В вебе этим языком является HTTP (HyperText Transfer Protocol — протокол передачи гипертекста).
HTTP — это текстовый протокол. Это значит, что все сообщения, летающие по сети, представляют собой обычный текст, который можно прочитать (если он не зашифрован через HTTPS, но об этом позже).
Взаимодействие всегда происходит по сценарию:
!Схема цикла запрос-ответ между клиентом и сервером.
Анатомия HTTP-запроса
Когда вы вводите адрес сайта в строку браузера, браузер формирует письмо для сервера. Давайте посмотрим, из чего оно состоит.
Пример упрощенного запроса:
Запрос состоит из трех основных частей:
GET, то есть «получить»).
* Путь (Path): Какой ресурс нам нужен? (в примере — /profile).
* Версия протокола: Обычно HTTP/1.1 или HTTP/2.Host указывает, к какому домену мы обращаемся, а User-Agent рассказывает серверу, какой у нас браузер.Основные методы HTTP
Метод (или глагол) — это первое слово в запросе, которое говорит серверу о наших намерениях. Самые популярные методы часто называют аббревиатурой CRUD (Create, Read, Update, Delete), хотя соответствие не всегда 100%.
GET: «Дай мне это». Используется для получения данных. Когда вы открываете любую страницу, вы делаете GET-запрос. Тела запроса обычно нет.* * POST: «Прими это и обработай». Используется для отправки новых данных (регистрация, вход в систему, публикация поста). Данные лежат в теле запроса. * PUT / PATCH: «Обнови это». Используется для изменения уже существующих данных (редактирование профиля). * DELETE: «Удали это». Используется для удаления данных.
Анатомия HTTP-ответа
Сервер получил запрос, подумал и отправляет ответ. Пример:
Ответ также состоит из трех частей:
200.Content-Type говорит браузеру, что мы прислали (HTML, картинку или просто текст).Коды состояния: Светофор интернета
Код состояния — это трехзначное число, которое сразу говорит клиенту, как прошел запрос. Их сотни, но вам нужно знать основные группы:
* 2xx (Успех): Все хорошо.
* 200 OK: Запрос выполнен успешно.
* 201 Created: Ресурс успешно создан (обычно после POST).
* 3xx (Перенаправление): Ресурс переехал.
* 301 Moved Permanently: Страница переехала навсегда, ищи её по новому адресу.
* 4xx (Ошибка клиента): Вы (клиент) сделали что-то не так.
* 400 Bad Request: Сервер не понял запрос (ошибка в синтаксисе).
* 401 Unauthorized: Вы не авторизованы (нужен логин/пароль).
* 404 Not Found: Знаменитая ошибка. Того, что вы ищете, не существует.
* 5xx (Ошибка сервера): Вы все сделали правильно, но сервер сломался.
* 500 Internal Server Error: Общая ошибка сервера (упала база данных, ошибка в коде).
* 503 Service Unavailable: Сервер перегружен или на обслуживании.
Stateless: У сервера нет памяти
Важная особенность HTTP — он Stateless (без сохранения состояния). Это значит, что сервер не помнит вас между двумя разными запросами.
Представьте, что вы подходите к бармену и заказываете колу. Он наливает. Через минуту вы подходите снова и говорите: «Повтори». В мире HTTP бармен посмотрит на вас как на незнакомца и спросит: «Что повторить? Кто вы?». Каждый запрос — как чистый лист.
> «HTTP — это разговор с человеком, страдающим амнезией. Каждый раз приходится представляться заново».
Чтобы обойти это ограничение и создать видимость «сеанса» (чтобы вам не приходилось вводить пароль на каждой странице сайта), разработчики придумали Cookies и Токены, но об этом мы поговорим в следующих статьях курса.
Заключение
Сегодня мы заложили первый камень в фундамент ваших знаний о Back-end разработке. Мы выяснили, что:
В следующем уроке мы углубимся в то, как именно сервер обрабатывает эти запросы, и познакомимся с понятием API.
Готовы проверить свои знания? Переходите к домашнему заданию!