FastAPI — это современный, быстрый (high-performance) веб-фреймворк для Python, предназначенный для создания API. Он построен на основе Starlette и Pydantic, обеспечивая гибкость, читаемость кода и мощные инструменты для работы с данными.
Если вы новичок, вот пошаговое руководство, чтобы стартануть 🚀:
1. Установим FastAPI и Uvicorn
FastAPI сам по себе — это фреймворк, но для запуска приложения понадобится сервер ASGI. Рекомендуется использовать Uvicorn. Установим всё сразу:
poetry add fastapi uvicorn
2. Создаём первое приложение
Создадим файл main.py с минимальным кодом:
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"message": "Привет, FastAPI!"}
3. Запуск приложения
Запускаем сервер:
uvicorn main:app --reload
-
main — имя файла (без .py).
-
app — объект FastAPI.
-
--reload — автоматически перезагружает сервер при изменении кода.
Откройте браузер и перейдите по адресу http://127.0.0.1:8000. Вы увидите JSON-ответ:
{"message": "Привет, FastAPI!"}
4. Документация API (Swagger)
FastAPI автоматически генерирует документацию Swagger. Перейдите по адресу http://127.0.0.1:8000/docs.
Для альтернативного формата документации OpenAPI — http://127.0.0.1:8000/redoc.
5. Добавляем эндпоинты
FastAPI позволяет легко работать с различными HTTP-методами. Вот пример:
@app.get("/items/{item_id}")
def read_item(item_id: int, q: str = None):
return {"item_id": item_id, "q": q}
-
item_id — это путь-параметр, автоматически типизированный как int.
-
q — необязательный query-параметр.
Попробуйте запрос:
http://127.0.0.1:8000/items/42?q=test.
6. Работа с данными: Pydantic
FastAPI использует Pydantic для проверки данных. Вот пример с POST-запросом:
from pydantic import BaseModel
class Item(BaseModel):
name: str
price: float
is_offer: bool = None
@app.post("/items/")
def create_item(item: Item):
return {"item_name": item.name, "item_price": item.price}
Попробуйте отправить POST-запрос через Swagger или инструмент вроде Postman.
7. Зачем FastAPI?
-
🔥 Скорость: Работает на ASGI, что обеспечивает высокую производительность.
-
🛠 Документация: Автоматическая генерация Swagger и OpenAPI.
-
🎯 Типизация: Строгая проверка данных на основе аннотаций типов.
-
😍 Простота: Интуитивно понятный синтаксис, с которым легко стартовать.
💡 Советы для новичков:
-
Всегда типизируйте данные — это упростит отладку.
-
Используйте Pydantic для работы со сложными моделями данных.
-
Для развёртывания приложения в продакшн используйте Gunicorn вместе с Uvicorn.
Готовы к разработке? Начните экспериментировать и развивать своё API! 🎉
Написать комментарий