user

Авторизация

Добро пожаловать!

Регистрация

Undefined666

Кодинг

Начало работы с FAST API

 FastAPI — это современная и быстрая веб-инфраструктура для создания API с помощью Python. Этот веб-фреймворк Python приобрел большую популярность в последнее время. Разработка программного обеспечения в FAST API похожа на Flask, который был вариантом по умолчанию для большинства людей, начинающих веб-разработку на Python. Fast API прост в использовании благодаря простой и понятной документации. Как следует из названия, FastAPI работает быстро; он находится на одном уровне с Go и NodeJs; благодаря Starlette и Pydantic построен фреймворк FastAPI. FastAPI быстрее, чем веб-инфраструктура Flask, потому что он построен на ASGI (асинхронный интерфейс шлюза сервера) вместо WSGI (интерфейс шлюза веб-сервера), который использует Flask. Проще говоря, при использовании ASGI разные запросы не должны ждать другого запроса, прежде чем они завершат свои задачи. Различные запросы могут обрабатываться в произвольном порядке. В то время как в WSGI запросы обрабатываются только последовательно.

Возможности FASTAPI

fast api

 Помимо того факта, что FAST API действительно быстр, в FastAPI есть некоторые особенности, которые заслуживают внимания, и некоторые из них таковы;

  • Автоматическая документация : FastAPI предоставляет интерактивную документацию API и веб-интерфейс пользователя. Эти интерфейсы основаны на OpenAPI Framework с несколькими вариантами, из которых по умолчанию используются SwaggerUI и ReDoc.
  • Проверка : FastAPI обеспечивает проверку для большинства типов данных Python и других типов данных, таких как UUID, электронная почта и т. д., поскольку он использует Pydantic для своей проверки.
  • Безопасность и аутентификация : FastAPI поставляется со всеми схемами безопасности, определенными в OpenAPI, а также функциями безопасности в Starlette (включая файлы cookie сеанса).
  • Внедрение зависимостей : возможно, вы слышали о принципах SOLID; FAST API серьезно относится к твердым принципам «D» с мощной системой внедрения зависимостей. Внедрение зависимостей обрабатывается системой автоматически, что позволяет писать чистый код и снижает связанность во всей системе.

Использование FAST API

 Чтобы получить представление о том, как создать приложение с FAST API, мы создадим минимальное приложение, чтобы показать, как работает FAST API и как структурировать проекты в FAST API. По ходу дела предполагается хорошее знание python.

Монтаж

 Во-первых, мы должны установить FAST API с помощью менеджера пакетов pip python или поэзии.

 Используя pip, мы запускаем команду pip install fast-api

 После того, как мы инициализировали с помощью poetry init, используя поэзию, мы можем запустить poetry add fast-api.

 Как обсуждалось ранее, FAST API построен на ASGI; следовательно, нам нужно будет установить сервер ASGI. Для этого урока мы будем устанавливать uvicorn. Мы можем установить это, используя poetry add uvicorn OR pip install uvicorn. Другие пакеты, такие как pydantic и Starlette, устанавливаются при установке FAST API.

Создание мини-приложения

 Успешно установив вышеуказанные пакеты, мы готовы создать наше минимальное приложение FAST API. Это приложение будет списком дел, и мы должны иметь возможность создавать, обновлять и удалять дела.

 Сначала мы создаем файл с именем main.py, который служит точкой входа в приложение.

 Функция start_application устанавливает все важные сущности, необходимые для нашего приложения, такие как добавление маршрутизатора, который мы увидим позже, настройка CORS и многое другое. Мы добавили CORSMiddleware start_application, чтобы мы могли делать запросы из разных источников; это запросы, которые исходят от другого IP-адреса, другого протокола, порта и т. д. FAST API также дает вам возможность добавлять собственное промежуточное ПО.

 В последнем разделе приведенного выше фрагмента кода мы использовали ASGI-сервер uvicorn для запуска приложения, указав среди прочего номер порта и хост. Обратите внимание, main:app указывает на то, где приложение инициализировано в main.py, и поскольку main.py оно находится в корневой папке, мы пишем его просто как main:app.

 Чтобы запустить приложение, вы можете запустить python3 main.py, и сервер запустится на порту 8000, как определено в последней строке кода. http://localhost:8000 должен показать {«detail»: «Not Found»}. Вы можете получить доступ к пользовательскому интерфейсу документации swagger с помощью http://localhost:8000/docs и пользовательскому интерфейсу redoc с помощью http://localhost:8000/redoc

Создание API

 Создайте папку API, создайте папку todo и добавьте todo.py файл. В файле у нас будет следующий фрагмент кода.

 В приведенном выше фрагменте кода мы создаем маршрутизатор для todo API. Мы также создали базу данных в памяти для хранения наших задач, в основном для функций CRUD (создание, обновление и удаление).

 Также важно отметить, что, хотя в этом руководстве мы не подключались к базе данных, мы можем подключить любую базу данных к нашему приложению, используя такие библиотеки, как Sqlalchemy, Pymongo и т. д.

 Вы заметите, что некоторые схемы импортированы в файл todo; запуск кода без этих схем приведет к ошибке. Следовательно, мы создаем [schemas.py](<http://schemas.py>)файл в папке todos. Схемы состоят из моделей Pydantic, которые мы будем использовать для проверки данных при создании API. Детали схемы показаны ниже.

 Описание в каждом поле позволяет FAST API разрабатывать подробную документацию. Creator_name может содержать не более 20 символов; если число превышает 20 символов, Pydantic выдаст исключение ошибки проверки. С четко определенной моделью Pydantic мы можем получить правильные данные. Рекомендуется просмотреть документацию по Pydantic , так как с помощью Pydantic можно сделать еще много интересных вещей.

 Давайте приступим к созданию некоторых API.

 Мы украшаем функции create_todo и get_a_todo созданным ранее маршрутизатором и используем HTTP-глагол POST для создания новой задачи с маршрутом по умолчанию '/'. Функция create_todo принимает данные параметра типа Todo (созданная нами схема pydantic); таким образом, Pydantic может проверять данные в соответствии с определением схемы. В последней строке create_todo функции мы передаем новую задачу, которую мы только что создали, для отображения данных в соответствии со схемой TodoResponse .

 Для получения задачи маршрут изменяется в соответствии с todo_id, который мы стремимся получить. Итак, мы передаем todo_id в URL и добавляем todo_id в качестве параметра get_a_todo функции.

 Мы получили работающую простую функциональность API, поэтому мы можем добавить маршрутизатор к start_application функции в main.py файле, который мы создали изначально.

 В начале фрагмента кода выше мы импортировали todo из папки API для доступа ко всем функциям в файле и роутере, что важно в данном случае. Мы включаем наш маршрутизатор в start_application функцию, вызывая include_router в приложении и передавая маршрутизатор todo в качестве параметра.

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

 Приведенный выше пример представляет собой очень упрощенный подход к пониманию FAST API; это лишь малая часть того, какие приложения можно создавать с помощью FAST API. FAST API — это очень простая, но мощная и гибкая платформа, которую можно использовать для создания крупномасштабных приложений.

Асинхронный/ожидание

async/await

 В приведенном выше руководстве вы, должно быть, видели использование асинхронности в руководстве при определении функций для различных маршрутов. Современные приложения Python поддерживают асинхронный код, т. е. использование async/await.

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

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

Вывод

 Хотя мы разработали действительно простое приложение, чтобы продемонстрировать, как создавать API с помощью FAST API, есть множество других интересных вещей, которые вы можете создать с помощью FAST API. Эта статья должна была дать вам некоторые базовые знания об использовании FAST API в вашем приложении.