Учебное пособие по Python REST API: начало работы с FastAPI

Учебное пособие по Python REST API Изучение

REST API является архитектурным образцом для создания веб — сервисов. REST — это набор правил, в которых изложены лучшие практики обмена данными между клиентами и серверами. Они используют HTTP-запросы для управления данными и связи с веб-службами. API-интерфейсы REST не сохраняют состояние, кэшируются и согласованы. Они отлично подходят для создания универсальных и масштабируемых веб-приложений. Три основных фреймворка Python — это Django, Flask и FastAPI.

Сегодня мы собираемся изучить FastAPI, веб-фреймворк с открытым исходным кодом, используемый для создания API с помощью Python.

Что такое FastAPI?

Официальный веб-сайт 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.
  • Плагины : вы можете легко создавать плагины, используя внедрение зависимостей.
  • Подсказки типа : вы можете использовать подсказку типа для проверки и преобразования данных.
Читайте также:  Как отправить электронную почту через Gmail с помощью Python?

Flask против FastAPI

В этом разделе мы рассмотрим Flask и FastAPI. Обсудим их плюсы, минусы и варианты использования.

Flask

Flask — это микрофреймворк Python. Он поставляется с ORM, кешированием и аутентификацией. Он был разработан для создания веб-приложений с использованием Python. Он считается простым, быстрым и масштабируемым.

Плюсы

  • Гибкость : вы можете управлять большинством аспектов Flask.
  • Интуитивно понятный : Flask отлично подходит для начинающих из-за своей простоты.
  • Встроенный сервер разработки : эта встроенная функциональность, наряду со встроенной поддержкой, позволяет проводить беспроблемное модульное тестирование.

Минусы

  • Нет проверки данных: с помощью Flask вы можете передавать любой тип данных. Это может привести к частому сбою программ.
  • Время: у него есть единственный источник, который обрабатывает запросы по очереди, а это означает, что для обработки запросов может потребоваться некоторое время.

Сценарии использования

Flask обычно используется для таких проектов, как:

  • Системы электронной коммерции
  • Боты для социальных сетей
  • Социальные сети
  • Статические сайты

FastAPI

FastAPI — это современный высокопроизводительный веб-фреймворк. Он используется для создания веб-API.

Плюсы

  • Проверка данных : он проверяет ваш тип данных даже во вложенных запросах JSON.
  • Обработка исключений : с FastAPI легко выполнять обработку исключений.
  • Поддержка асинхронного кода : он поддерживает асинхронный код с использованием async/awaitключевых слов Python.

Минусы

  • Проверка запроса: FastAPI использует Pydantic для проверки запроса. Этот процесс не всегда интуитивно понятен и иногда требует написания собственного валидатора.
  • Меньшее сообщество: поскольку фреймворк все еще довольно новый, сообщество меньше по сравнению с другими фреймворками.

Сценарии использования

FastAPI обычно используется для таких проектов, как:

  • Внутреннее антикризисное управление
  • Развертывание моделей машинного обучения
  • Создание учетных записей, логинов и аутентификации для веб-приложений

FastAPI Привет, мир

Попрактикуемся с FastAPI! Мы рассмотрим простой Hello World!и разберем на части.

from fastapi import FastAPI
app = FastAPI()
@app.get(«/»)
def root ():
  return {«message»: «Hello World!»}

Чтобы запустить сервер, нам нужно выполнить следующую команду:

uvicorn main:app —reload

Давайте разберемся с этим:

  • main: относится к имени файла
  • app: относится к объекту, FastAPIсозданному внутри файла hello.py
  • —reload: параметр, который перезапускает сервер после изменения кода

Давайте разберем наш Hello World!код:

  • Строка 1. Мы импортируем FastAPIкласс Python, обеспечивающий все функции API.
  • Строка 3 : Мы создаем экземпляр класса FastAPIи называем его app. Это appупоминается uvicornв приведенной выше команде.
  • Строка 5 : Создаем GETпуть.
  • Строка 6 : мы определяем функцию, которая будет выполняться всякий раз, когда кто-то посещает указанный выше путь.
  • Строка 7 : мы возвращаем ответ клиенту при каждом обращении к маршруту.

Базовые строительные блоки FastAPI

Давайте рассмотрим некоторые строительные блоки FastAPI, включая параметры пути, параметры запроса и тела запроса.

Path parameters

Параметры пути помогают ограничить вызов API до одного ресурса, что означает, что вам не нужно создавать тело для чего-то столь же простого, как поиск ресурсов.

Эти параметры заключены в фигурные скобки {}и позволяют вам контролировать представление определенных ресурсов. Они размещаются перед строкой запроса и на пути к конечной точке.

Давайте посмотрим, как их использовать:

from fastapi import FastAPI
app = FastAPI()
@app.get(«/courses/{course_name}»)
def read_course(course_name):
  return {«course_name»: course_name}

Значение параметра пути course_nameбудет передано функции read_couse()в качестве аргумента course_name.

Query parameters

Параметры запроса необязательны. В FastAPI параметры функции, которые не объявлены как часть параметров пути, автоматически интерпретируются как параметры запроса.

Давайте посмотрим на пример кода:

from fastapi import FastAPI
app = FastAPI()
course_items = [{«course_name»: «Python»}, {«course_name»: «SQLAlchemy»}, {«course_name»: «NodeJS»}]
@app.get(«/courses/»)
def read_courses(start: int, end: int):
    return course_items[start : start + end]

Запроса является множество пар ключ-значение, которое приходит после знака вопроса ?в URL, разделенных амперсандом &.

Взгляните на следующий URL:

http://localhost:8000/courses/?start=0&end=10

Его параметры запроса:

startсо значением 0и endсо значением 10.

В строке 8 кода мы передаем два параметра запроса, которые ожидает наш API.

Request body

Тело запроса — это данные, отправленные клиентом в ваш API. Чтобы объявить один в FastAPI, мы можем использовать модели Pydantic.

Давайте посмотрим на примере, как мы можем это сделать:

from typing import Optional
from fastapi import FastAPI
from pydantic import BaseModel
class Course(BaseModel):
    name: str
    description: Optional[str] = None
    price: int
    author: Optional[str] = None
app = FastAPI()
@app.post(“/courses/”)
def create_course(course: Course):
    return course

Давайте разберемся с этим:

  • Строки 1-3 : Импортируем необходимые пакеты.
  • Строка 5 : объявляем модель данных запроса.
  • Строка 11 : Мы создаем экземпляр FastAPIкласса.
  • Строка 13 : Создаем POSTпуть.
  • Строка 14 : Мы добавляем модель данных запроса в путь.
Оцените статью
bestprogrammer.ru
Добавить комментарий