Как написать простой API на FastAPI

3 минуты чтения
Средний рейтинг статьи — 4.6

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

Установка FastAPI и Uvicorn

FastAPI работает совместно с Uvicorn — быстрым ASGI-сервером для обработки запросов. Установим их с помощью pip:

pip install fastapi uvicorn

После установки мы можем приступить к написанию простого API.

Создание простого API

Создадим файл main.py и добавим туда базовый код API:

from fastapi import FastAPI
 
app = FastAPI()
 
@app.get("/")
def read_root():
    return {"message": "Hello, FastAPI!"}

Запустим сервер с автоматической перезагрузкой в случае изменения кода:

uvicorn main:app --reload

Теперь API доступен по адресу http://127.0.0.1:8000/. Это минимальный сервер, который просто возвращает сообщение "Hello, FastAPI!" при обращении к корневому маршруту.

Добавление маршрутов

Добавим несколько маршрутов для работы с данными. Например, реализуем получение информации о товаре по его ID, а также возможность создавать новые товары:

from pydantic import BaseModel
 
class Item(BaseModel):
    name: str
    description: str = None
    price: float
    tax: float = None
 
@app.get("/items/{item_id}")
def read_item(item_id: int, q: str = None):
    return {"item_id": item_id, "query": q}
 
@app.post("/items/")
def create_item(item: Item):
    return {"item": item}

Теперь наш API позволяет получать информацию о товарах и добавлять новые товары с помощью POST-запросов.

Автоматическая документация

Одним из главных преимуществ FastAPI является встроенная генерация документации. Документация создается автоматически и доступна в двух форматах:

  • Swagger UI: http://127.0.0.1:8000/docs
  • ReDoc: http://127.0.0.1:8000/redoc

Эти интерфейсы позволяют удобно тестировать API прямо из браузера без необходимости использования сторонних инструментов.

Дополнительные возможности

FastAPI поддерживает валидацию данных, асинхронные запросы и middleware. Например, мы можем легко добавить обработчик исключений для обработки ошибок:

from fastapi import HTTPException
 
@app.get("/error")
def error_example():
    raise HTTPException(status_code=400, detail="Пример ошибки")

Этот маршрут вернет HTTP-ошибку 400 с сообщением "Пример ошибки".

Заключение

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

3 минуты чтения
Средний рейтинг статьи — 4.6

Настроить мониторинг за 30 секунд

Надежные оповещения о даунтаймах. Без ложных срабатываний