Основы веб-разработки: клиент, сервер и Python
Веб-приложение — это диалог между клиентом и сервером. Разберёмся, кто в нём кто.
Веб-приложение обычно состоит из двух взаимодействующих сторон: клиента и сервера. Клиентом чаще всего является браузер. Он отправляет HTTP-запросы и отображает полученные ответы. Серверная часть принимает запросы, выполняет логику приложения, при необходимости обращается к базе данных и формирует ответ.
Python часто используется для программирования серверной части веб-приложения. В этой главе серверное приложение написано на Python с использованием Flask.
Клиент и сервер
Клиент — программа, которая отправляет запрос и получает на него ответ. Сервер — программа, которая принимает запросы и отвечает на них. Слово «сервер» обозначает именно серверную программу (процесс); в разговорной речи им иногда называют и компьютер, на котором эта программа запущена, — из контекста обычно понятно, что имеется в виду.
Этот обмен запросами и ответами подчиняется общему правилу — протоколу HTTP (HyperText Transfer Protocol, протокол передачи гипертекста). Подробнее об этом — в разделах 22.7-22.10; здесь достаточно знать, что браузер и сервер обмениваются сообщениями по одним и тем же правилам, независимо от того, кто их написал.
Что делает браузер
Браузер — это клиентская программа, которая по адресу пользователя строит и отправляет HTTP-запрос, получает HTTP-ответ и отображает его: разбирает HTML, применяет CSS, выполняет JavaScript, показывает изображения и другие ресурсы страницы.
Что делает серверное приложение
Серверное приложение принимает запрос, определяет, что нужно сделать (открыть список задач, сохранить новую запись, вернуть данные в формате JSON), при необходимости обращается к базе данных и формирует ответ — чаще всего HTML-страницу или данные.
Где используется Python
В типичном веб-приложении Python работает на серверной стороне: код выполняется на сервере, а браузеру отправляется уже готовый результат. Дальше в этой главе так и есть — Python исполняется сервером, собранным на Flask.
Интернет и Всемирная паутина
Интернет — это сеть, которая физически соединяет компьютеры друг с другом и умеет передавать между ними данные. Всемирная паутина (World Wide Web, веб) — один из способов использовать эту сеть: сайты, ссылки между ними, протокол HTTP. По тому же интернету работают и другие сервисы — почта, мессенджеры, онлайн-игры, — веб лишь один из них, хотя и самый заметный.
Адрес сайта: домен и IP-адрес
Чтобы браузер знал, к какому серверу обращаться, у сайта есть домен —
имя вида python.org, которое человеку легко запомнить. Но
компьютеры в интернете находят друг друга по числовым адресам —
IP-адресам. Специальная служба, DNS, превращает домен в IP-адрес перед
отправкой запроса. Весь этот путь подробно рассматривается в разделе 22.7, а устройство
самого адреса — в разделе 22.8.
Фронтенд и бэкенд
То, что видит и с чем взаимодействует пользователь в браузере — HTML, CSS, JavaScript, — называют фронтендом (front — «перед»). Программу, которая работает на сервере и готовит ответы, называют бэкендом (back — «тыл»).
Статическая страница и динамическое приложение
Самый простой сайт — это просто файлы .html, лежащие на
сервере: сервер отдаёт их без изменений, это статическая страница. Если
же ответ каждый раз собирается заново — с учётом того, кто спросил, что хранится в базе
данных, что человек только что отправил в форме, — такое приложение называют
динамическим. Сайт, который вы соберёте в этой главе на Flask, —
динамический: он строит HTML-страницу из данных прямо во время запроса.
В следующих трёх разделах — краткое знакомство с языками фронтенда: HTML (раздел 22.2), CSS (раздел 22.3) и JavaScript (раздел 22.4). Затем — первый бэкенд на Python с библиотекой Flask (раздел 22.5).