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

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


Источник статьи

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

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

Содержание

  1. Что такое FastAPI?
  2. Возможности FastAPI
  3. Flask против FastAPI
  4. Flask
  5. FastAPI
  6. FastAPI Привет, мир
  7. Базовые строительные блоки FastAPI
  8. Path parameters
  9. Query parameters
  10. Request body

Что такое 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.
  • Плагины : вы можете легко создавать плагины, используя внедрение зависимостей.
  • Подсказки типа : вы можете использовать подсказку типа для проверки и преобразования данных.

Читайте также:  Spring Boot — автоматическая настройка

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: параметр, который перезапускает сервер после изменения кода

Читайте также:  Учебник по команде Ping в Ubuntu

Давайте разберем наш 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 : Мы добавляем модель данных запроса в путь.



Report Page