REST API — это архитектурный паттерн для создания веб-сервисов. REST — это набор правил, которые описывают лучшие практики обмена данными между клиентами и серверами. Они используют HTTP-запросы для манипулирования данными и взаимодействия с веб-сервисами. API REST не имеют статистики, кэшируются и согласованы. Отлично подходят для создания универсальных и масштабируемых веб-приложений. Три основных фреймворка Python - Django, Flask и FastAPI.
В этом материале мы рассмотрим FastAPI, веб-фреймворк с открытым исходным кодом, используемый для создания API на Python.
Что такое FastAPI?
FastAPI — это современный и высокопроизводительный веб-фреймворк для создания API на Python 3.6+, основанный на стандартных подсказках типов Python. FastAPI работает очень быстро благодаря встроенной поддержке функции async в Python 3.6+.
FastAPI был выпущен в 2018 году и создан Себастьяном Рамиресом. Рамиреса не устраивали существующие фреймворки, такие как Flask и DRF, поэтому он создал свой собственный фреймворк, используя такие инструменты, как Starlette и Pydantic. Сейчас многие крупные технологические компании, такие как Uber, Netflix и Microsoft, используют FastAPI для создания своих приложений.
Возможности FastAPI
FastAPI обладает множеством замечательных функций. Давайте рассмотрим их:
- Высокая производительность: FastAPI работает быстро. Он считается одним из самых быстрых фреймворков Python, доступных в настоящее время.
- Надежность: вы можете создавать готовый к производству код с помощью автоматической интерактивной документации.
- Интуитивно понятный интерфейс: FastAPI был разработан, чтобы быть простым в использовании и изучении. Он предлагает отличную поддержку редактора и документацию.
- Быстрое создание кода: FastAPI увеличивает скорость разработки на 200-300 %.
- Меньше ошибок: сокращает около 40 % возникающих ошибок.
- Совместимость: он хорошо работает с открытыми стандартами APIS, OpenAPI (ранее известный как Swagger) и JSON-схемами.
- Плагины: вы можете легко создавать плагины, используя инъекцию зависимостей.
- Подсказки типов: вы можете использовать подсказки типов для проверки и преобразования данных.
Сравнение Flask и FastAPI
В этом разделе мы рассмотрим Flask и FastAPI. Мы обсудим их плюсы, минусы и варианты использования.
Flask
Flask - это микрофреймворк для Python. В его состав входят ORM, кэширование и аутентификация. Он был разработан для создания веб-приложений на Python. Он считается простым, быстрым и масштабируемым.
Плюсы: — Гибкость: вы можете управлять большинством аспектов Flask. — Интуитивность: Flask отлично подходит для новичков благодаря своей простоте. — Встроенный сервер разработки: эта встроенная функциональность, а также интегрированная поддержка позволяют легко проводить модульное тестирование. |
Минусы: — Нет проверки данных: в Flask можно передавать данные любого типа. Это может привести к частым сбоям в работе программ. — Время: в системе есть один источник, который обрабатывает запросы по очереди, что означает, что на обработку запросов может уйти некоторое время.
|
Flask обычно используется для таких проектов, как:
- Системы электронной коммерции
- Боты для социальных сетей
- Социальные сети
- Статические веб-сайты
FastAPI
FastAPI - это современный высокопроизводительный веб-фреймворк. Он используется для создания веб-интерфейсов.
Плюсы: — Валидация данных: проверяет тип данных даже во вложенных JSON-запросах. — Обработка исключений: с помощью FastAPI можно легко обрабатывать исключения. — Поддержка асинхронного кода: поддерживается асинхронный код с использованием ключевых слов async/await Python. |
Минусы: — Проверка запросов: FastAPI использует Pydantic для проверки запросов. Этот процесс не всегда интуитивно понятен и иногда требует написания собственного валидатора. — Небольшое сообщество: поскольку фреймворк все еще довольно новый, сообщество в нем меньше, чем в других фреймворках. |
FastAPI обычно используется в таких проектах, как:
- Внутреннее антикризисное управление
- Развертывание моделей машинного обучения
- Создание учетных записей, логинов и аутентификации для веб-приложений
Hello World в FastAPI
Давайте немного попрактикуемся в работе с FastAPI! Мы рассмотрим простой Hello World! и разберем его на части.
Чтобы запустить сервер, нужно выполнить следующую команду:
Давайте разберемся, что к чему:
- main: относится к имени файла
- app: обозначает объект FastAPI, созданный внутри файла hello.py
- --reload: параметр, который заставляет сервер перезапускаться после изменения кода
Давайте разберем наш код «Hello World!»:
Строка 1: мы импортируем FastAPI, который является классом Python, предоставляющим всю функциональность API.
Строка 3: мы создаем экземпляр класса FastAPI и называем его app. Это приложение, на которое ссылается uvicorn в приведенной выше команде.
Строка 5: создаем путь GET.
Строка 6: определяем функцию, которая будет выполняться всякий раз, когда кто-то посетит указанный выше путь.
Строка 7: мы возвращаем ответ клиенту при каждом обращении к пути.
Основные блоки FastAPI
Давайте рассмотрим некоторые строительные блоки FastAPI, включая параметры пути, параметры запроса и тело запроса.
Параметры пути
Параметры пути помогают ограничить вызов API одним ресурсом, что означает, что вам не нужно создавать тело запроса для такой простой вещи, как поиск ресурса.
Эти параметры заключаются в фигурные скобки {} и позволяют управлять представлением определенных ресурсов. Они размещаются перед строкой запроса и в пути конечной точки.
Давайте рассмотрим, как их использовать:
Значение параметра path course_name будет передано в функцию read_couse() в качестве аргумента course_name.
Параметры запроса
Параметры запроса являются необязательными. В FastAPI параметры функции, не объявленные как часть параметров пути, автоматически интерпретируются как параметры запроса.
Давайте посмотрим на пример кода:
Запрос - это набор пар ключ-значение, которые идут после вопросительного знака ? в URL-адресе и разделяются амперсандом &.
Взгляните на следующий URL:
http://localhost:8000/courses/?start=0&end=10
Его параметры запроса следующие: начинаются со значения 0 и заканчиваются значением 10.
В строке 8 кода мы передаем два параметра запроса, которые ожидает наш API.
Тело запроса
Тело запроса - это данные, отправляемые клиентом вашему API. Чтобы объявить его в FastAPI, мы можем использовать модели Pydantic.
Давайте посмотрим на примере, как это можно сделать:
Давайте разберем эти части:
Строки 1-3: импортируем необходимые пакеты.
Строка 5: мы объявляем модель данных запроса.
Строка 11: создаем экземпляр класса FastAPI.
Строка 13: создаем путь POST.
Строка 14: добавляем модель данных запроса в путь.
Что изучать дальше
Поздравляем вас с первыми шагами в работе с FastAPI! FastAPI — это легкий веб-фреймворк для Python. Он позволяет создавать API легко, быстро и эффективно. Если вы заинтересованы в разработке веб-приложений, изучение FastAPI позволит вам быть впереди всех. Чтобы освоиться с фреймворком, мы предлагаем вам углубиться в него и поработать над несколькими проектами.