Как написать простой API на FastAPI
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 — отличный выбор!
Настроить мониторинг за 30 секунд
Надежные оповещения о даунтаймах. Без ложных срабатываний