Настройка проекта 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 successHTTPException
Вызовите 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 — локальная установка не требуется.
Все уроки этого курса
- Настройка проекта FastAPI и первая конечная точка
- Параметры пути, параметры запроса и тела запросов
- Внедрение зависимостей и аутентификация
- Асинхронные конечные точки и интеграция с базой данных