Зарегистрируйтесь для доступа к 15+ бесплатным курсам по программированию с тренажером

Микрофреймворки Ключевые аспекты веб-разработки на Python

Бэкенд веб-приложения большую часть времени обрабатывает запросы от фронтенда. Ответная реакция на запрос зависит от того, какой адрес мы запросили и какой HTTP-глагол использовали.

Чаще всего используются два глагола:

  • POST-запрос
  • GET-запрос

Подробнее о глаголах протокола HTTP вы узнаете в соответствующем курсе. Пока мы просто уточним, что глагол — такая же часть запроса, как и URL в адресной строке браузера.

Практически в любом веб-приложении нужно:

  1. Принять запрос
  2. Определить, какой обработчик должен выполниться
  3. Выполнить обработчик и подготовить ответ
  4. Вернуть ответ клиенту

Этот набор действий практически не меняется от проекта к проекту, поэтому его и выносят во фреймворк. В этом уроке мы разберемся, как работают микрофреймворки и для каких задач применяются.

Что такое фреймворк

Типичный фреймворк работает в режиме «не звоните нам, мы сами вам позвоним»:

  • Пользователь фреймворка встраивает свои функции в готовый каркас
  • Фреймворк сам решает, когда и какие функции вызывать

Этим фреймворк отличается от обычной библиотеки — библиотеки обычно отдают контроль пользователю.

Давайте рассмотрим пример кода, построенного с использованием веб-фреймворка:

from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello, World!'

Эти пять строчек — готовое веб-приложение, пусть и содержащее всего один обработчик hello_world.

Обратите внимание, насколько код обработчика лаконичен: обработчик возвращает строку и вообще является максимально простой функцией. Вся магия скрыта в декораторе @app.route, который привязывает обработчик к конкретному пути.

Путь — это часть адреса, идущая следом за доменным именем в HTTP-запросе. Возьмем для примера такой адрес:

https://foo.bar/this/is/a/path

Найдем в нем путь:

/this/is/a/path

Вернемся к первому фрагменту:

from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello, World!'

Здесь hello_world отвечает на запросы по пути '/'. Это так называемый корень — минимально возможный путь.

Например, в адресе https://hexlet.io/ завершающий слэш — тот самый корень сайта, то есть его главная страница.

Рассмотренный пример демонстрирует использование микрофреймворка Flask. Приставка «микро-» обычно говорит, что фреймворк берет на себя только маршрутизацию — сопоставление путей с обработчиками. Иногда микрофреймворк включает в себя формирование простых ответов — скажем, текстовых ответов, как в примере выше.

Чем микрофреймворки отличаются от обычных

«Микроскопичность» часто связана еще и с тем, что реализованные с помощью микрофреймворков небольшие веб-приложения умещаются всего в один файл с кодом!

А вот Django и другие большие фреймворки уже требуют тщательного распределения кода по пакетам и модулям в соответствии со строгими правилами.

Скорее всего, к микрофреймворку вы будете со временем добавлять библиотеки с дополнительной функциональностью. При этом большой фреймворк обычно уже укомплектован кодом на все случаи жизни.

Такое разделение на «разумный минимум» и «все сразу и сразу по строгим правилам» сказывается на простоте изучения. С микрофреймворком сильно проще стартовать. Большие фреймворки можно будет освоить позже, когда вы освоитесь с основами веб-разработки и решите создать что-то большое и сложное.

Вы могли бы подумать, что микрофреймворки — это нечто «игрушечное» или «учебное», но это не совсем верный вывод.

Микрофреймворки применяются в реальных проектах, в том числе и больших. Разница между большим фреймворком и микрофреймворком с дополнительными библиотеками может быть минимальна. Часто выбор вообще зависит от предпочтений разработчика.


Аватары экспертов Хекслета

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят команда поддержки Хекслета или другие студенты

Об обучении на Хекслете

Для полного доступа к курсу нужен базовый план

Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.

Получить доступ
1000
упражнений
2000+
часов теории
3200
тестов

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов
Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff
Рекомендуемые программы
профессия
от 6 300 ₽ в месяц
Разработка веб-приложений на Django
10 месяцев
с нуля
Старт 4 апреля

Используйте Хекслет по-максимуму!

  • Задавайте вопросы по уроку
  • Проверяйте знания в квизах
  • Проходите практику прямо в браузере
  • Отслеживайте свой прогресс

Зарегистрируйтесь или войдите в свой аккаунт

Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»