1. Основы FastAPI: установка, структура проекта и создание первого Hello World приложения
Основы FastAPI: установка, структура проекта и создание первого Hello World приложения
Добро пожаловать в курс «Разработка современных веб-API на FastAPI». Это первая статья, с которой начнется ваше погружение в мир высокопроизводительной веб-разработки на Python. Сегодня мы разберем фундамент: что такое FastAPI, как подготовить рабочее окружение и как написать ваше первое работающее приложение.
Что такое FastAPI и почему он так популярен?
FastAPI — это современный, быстрый (высокопроизводительный) веб-фреймворк для создания API на Python 3.8+, основанный на стандартных подсказках типов Python (type hints).
Ключевые особенности, которые сделали его стандартом индустрии:
* Скорость: Он стоит в одном ряду с NodeJS и Go благодаря использованию Starlette (для веб-части) и Pydantic (для валидации данных). * Простота разработки: Уменьшает количество ошибок примерно на 40% и сокращает время написания кода. * Автоматическая документация: Одна из самых любимых функций разработчиков. Как только вы пишете код, FastAPI автоматически генерирует интерактивную документацию (Swagger UI и ReDoc).
!Архитектура работы FastAPI: от запроса клиента через сервер Uvicorn к самому приложению
Подготовка рабочего окружения
Перед тем как писать код, нам нужно подготовить «почву». Мы будем использовать командную строку (терминал) и редактор кода (рекомендуем VS Code или PyCharm).
1. Проверка версии Python
FastAPI требует Python версии 3.8 или выше. Проверьте вашу версию командой:
Если версия ниже 3.8, вам необходимо обновить Python.
2. Создание виртуального окружения
В Python принято изолировать зависимости каждого проекта. Это позволяет избежать конфликтов библиотек между разными проектами. Создадим папку для нашего проекта и виртуальное окружение внутри неё.
Для Windows:
Для macOS и Linux:
После активации вы увидите (venv) в начале строки терминала. Это означает, что теперь все устанавливаемые библиотеки будут храниться локально в этой папке.
Установка FastAPI и Uvicorn
Теперь, когда окружение готово, установим необходимые библиотеки. Нам понадобятся два ключевых компонента:
Выполните команду:
> ASGI (Asynchronous Server Gateway Interface) — это стандартный интерфейс между веб-серверами, фреймворками и приложениями на Python, поддерживающий асинхронность.
Структура простейшего проекта
Для начала нам не нужна сложная структура папок. Достаточно одного файла. Создайте в папке fastapi_course файл с именем main.py.
Ваша директория должна выглядеть так:
Пишем первое приложение Hello World
Откройте файл main.py в вашем редакторе кода и напишите следующий код:
Давайте разберем каждую строчку, чтобы понимать, что происходит «под капотом».
Импорт и создание приложения
Здесь мы импортируем класс FastAPI и создаем его экземпляр в переменной app. Эта переменная app будет главной точкой входа для всего нашего приложения. Именно к ней мы будем обращаться, чтобы настроить маршруты и конфигурацию.
Декоратор операции пути
Эта конструкция называется декоратором. Она говорит FastAPI, что функция, написанная ниже, должна обрабатывать запросы, которые приходят по определенному адресу.
* @app — обращение к нашему приложению.
* .get — HTTP-метод. Это означает, что функция сработает только тогда, когда придет GET-запрос (обычный запрос, когда вы открываете страницу в браузере).
* ("/") — это путь (path). Символ / означает корневой адрес сайта (например, http://mysite.com/).
Функция обработки пути
Это обычная Python-функция. Ключевое слово async делает её асинхронной. FastAPI прекрасно работает и с обычными функциями (def), но использование async позволяет добиться максимальной производительности при работе с базами данных или внешними API.
Функция возвращает словарь (dict). FastAPI автоматически преобразует этот словарь в формат JSON, который является стандартом для веб-API.
Запуск приложения
Мы написали код, но как его запустить? Здесь в игру вступает Uvicorn.
Вернитесь в терминал (убедитесь, что вы находитесь в папке с файлом main.py и виртуальное окружение активно) и выполните команду:
Разберем эту команду:
* uvicorn: имя запускаемого сервера.
* main: имя файла Python (модуля) без расширения .py.
* app: имя переменной, которую мы создали внутри файла (app = FastAPI()).
* --reload: флаг, который говорит серверу автоматически перезагружаться при любых изменениях в коде. Это очень удобно при разработке, но никогда не используйте этот флаг на реальном сервере (в продакшене).
После запуска вы увидите примерно такой вывод:
Теперь откройте браузер и перейдите по адресу: http://127.0.0.1:8000.
Вы увидите JSON-ответ:
Поздравляю! Вы только что создали и запустили свой первый API.
Интерактивная документация
Теперь перейдем к магии FastAPI. Не останавливая сервер, перейдите в браузере по адресу:
Вы увидите автоматическую интерактивную документацию, созданную с помощью Swagger UI.
!Интерфейс автоматической документации Swagger UI, доступный по адресу /docs
Здесь вы можете:
Также доступна альтернативная документация по адресу http://127.0.0.1:8000/redoc.
Расширение примера: Приветствие по имени
Давайте немного усложним задачу. Добавим возможность приветствовать конкретного пользователя. Измените ваш main.py, добавив новый маршрут:
Обратите внимание на конструкцию /hello/{name}. Фигурные скобки означают, что name — это параметр пути. Мы также добавили аргумент name: str в функцию. Благодаря типизации (: str), FastAPI знает, что этот параметр должен быть строкой.
Сохраните файл. Сервер перезагрузится автоматически (благодаря --reload).
Теперь перейдите по адресу http://127.0.0.1:8000/hello/FastAPI.
Вы получите:
Резюме
В этой статье мы:
fastapi и uvicorn./docs.В следующей статье мы углубимся в параметры запросов и валидацию данных, чтобы научиться передавать и обрабатывать более сложную информацию.