0Pricing
Python Academy · Урок

Настройка проекта FastAPI и первая конечная точка

Установите FastAPI, создайте проект и напишите первую конечную точку GET.

«Настройка проекта FastAPI и первая конечная точка» — бесплатный урок Python Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Python Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Python Academy содержит 4 уроков всего.

Что такое FastAPI?

FastAPI — современный веб-фреймворк Python для создания REST API. Он автоматически создаёт документацию OpenAPI, проверяет типы моделей запросов и ответов через Pydantic и обеспечивает высокую производительность с нативной поддержкой асинхронности.

# pip install fastapi uvicorn
from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def root():
    return {"message": "Hello, FastAPI"}

Запуск сервера

Запустите сервер с помощью uvicorn. Флаг --reload автоматически перезапускает его при изменениях кода во время разработки.

# main.py
from fastapi import FastAPI
app = FastAPI()

@app.get("/health")
def health(): return {"status": "ok"}

# Terminal:
# uvicorn main:app --reload
# → http://127.0.0.1:8000
# → http://127.0.0.1:8000/docs  (Swagger UI)

Методы HTTP

Добавляйте декораторы к функциям маршрутов: @app.get, @app.post, @app.put, @app.delete или @app.patch.

from fastapi import FastAPI
app = FastAPI()

@app.get("/items")
def list_items(): return []

@app.post("/items")
def create_item(): return {"id": 1}

@app.delete("/items/{item_id}")
def delete_item(item_id: int): return {"deleted": item_id}

Параметры пути

Объявляйте параметры пути в строке маршрута с помощью {name}, а также в аргументах функции с аннотациями типов.

from fastapi import FastAPI
app = FastAPI()

@app.get("/users/{user_id}")
def get_user(user_id: int):
    return {"user_id": user_id, "name": "Alice"}

# GET /users/42  → {"user_id": 42, "name": "Alice"}

Параметры запроса

Параметры функции, отсутствующие в пути, становятся параметрами запроса.

from fastapi import FastAPI
app = FastAPI()

@app.get("/items")
def list_items(skip: int = 0, limit: int = 10, q: str | None = None):
    return {"skip": skip, "limit": limit, "q": q}

# GET /items?skip=5&limit=20&q=search

Тело запроса Pydantic

Используйте Pydantic BaseModel в качестве типа параметра, чтобы объявить и проверить тело JSON-запроса.

from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI()

class Item(BaseModel):
    name: str
    price: float
    in_stock: bool = True

@app.post("/items")
def create_item(item: Item):
    return {"received": item.model_dump()}

Ошибки проверки Pydantic

Если тело запроса не соответствует схеме, FastAPI автоматически возвращает ответ 422 «Невозможно обработать сущность» с подробным сообщением об ошибке.

# POST /items with body {"name": 123}
# → HTTP 422 Unprocessable Entity
# {
#   "detail": [
#     {
#       "type": "string_type",
#       "loc": ["body","name"],
#       "msg": "Input should be a valid string"
#     }
#   ]
# }

Модели ответа

Используйте response_model=, чтобы объявить, что возвращает конечная точка. FastAPI проверяет ответ и отфильтровывает лишние поля.

from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI()

class UserOut(BaseModel):
    id: int
    name: str

@app.get("/users/{uid}", response_model=UserOut)
def get_user(uid: int):
    return {"id": uid, "name": "Alice", "password": "secret"}  # password filtered out

Коды состояния

Задайте код состояния успешного ответа по умолчанию с помощью status_code=. Импортируйте распространённые коды из fastapi.status.

from fastapi import FastAPI, status
app = FastAPI()

@app.post("/items", status_code=status.HTTP_201_CREATED)
def create_item():
    return {"id": 1}

# HTTP 201 Created is returned on success

HTTPException

Вызовите HTTPException, чтобы вернуть ответ с ошибкой, пользовательским кодом состояния и подробным сообщением.

from fastapi import FastAPI, HTTPException
app = FastAPI()

fake_db = {1: "Alice"}

@app.get("/users/{uid}")
def get_user(uid: int):
    if uid not in fake_db:
        raise HTTPException(status_code=404, detail="User not found")
    return {"name": fake_db[uid]}

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

FastAPI автоматически создаёт Swagger UI по адресу /docs и ReDoc по адресу /redoc на основе аннотаций маршрутов.

# After starting with uvicorn:
# http://localhost:8000/docs     — Swagger UI (try the API live)
# http://localhost:8000/redoc    — ReDoc (clean docs view)
# http://localhost:8000/openapi.json  — raw OpenAPI schema

Быстрая проверка

Как объявить обязательный параметр тела JSON-запроса в FastAPI?

Итоги

Маршруты FastAPI — это декорированные функции: параметры пути указываются в URL, параметры запроса — в типизированных аргументах, а тела запросов — в моделях Pydantic. Используйте HTTPException для ошибок. Swagger UI автоматически создаётся по адресу /docs.

Часто задаваемые вопросы

Урок «Настройка проекта FastAPI и первая конечная точка» бесплатный?

Да — полный текст урока «Настройка проекта FastAPI и первая конечная точка» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Python Academy, подпишись на CoddyKit PRO. Курс Python Academy содержит 4 уроков всего.

Чему я научусь в уроке «Настройка проекта FastAPI и первая конечная точка»?

Установите FastAPI, создайте проект и напишите первую конечную точку GET. Ты практикуешь Python Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Python Academy?

Предыдущий опыт не требуется. Python Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.

Сколько времени занимает урок «Настройка проекта FastAPI и первая конечная точка»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Python Academy?

Да. Каждый урок Python Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Настройка проекта FastAPI и первая конечная точка
  2. Параметры пути, параметры запроса и тела запросов
  3. Внедрение зависимостей и аутентификация
  4. Асинхронные конечные точки и интеграция с базой данных
← Назад к Python Academy