---
title: Веб-разработка и API
questionDates:
  q-transfer-0186: '2026-10-01'
  q-transfer-0187: '2026-10-01'
  q-transfer-0188: '2026-10-01'
  q-transfer-0189: '2026-10-01'
  q-transfer-0190: '2026-10-01'
seo:
  description: >-
    Тема «Веб-разработка и API» для собеседования Python Developer. Для чего
    Pydantic используют на границе API? Что такое ASGI и чем он отличается от
    WSGI?
  title: Веб-разработка и API — Python Developer
---

[Все темы Python Developer](/prep/python-developer)

## Для чего Pydantic используют на границе API? [#q-transfer-0186]

Pydantic применяют на недоверенной границе: модель описывает форму запроса или ответа, преобразует поддерживаемые представления, валидирует поля и выдает структурированные ошибки. После проверки код получает типизированный объект и сериализует его по явным правилам. API-модель не обязана совпадать с ORM-сущностью или доменной моделью: отдельные формы не дают внешнему клиенту случайно управлять внутренними полями. На внешней границе дополнительно ограничивают размер, время и права, а ошибки переводят в стабильный контракт ответа.

:::note[Ссылки для изучения]

1. [Pydantic на входе API: модель, преобразование и валидация тела запроса — FastAPI](https://fastapi.tiangolo.com/ru/tutorial/body/)
   :::

---

## Что такое ASGI и чем он отличается от WSGI? [#q-transfer-0187]

WSGI задает синхронный интерфейс Python-веб-приложения вокруг HTTP-запроса и ответа. ASGI описывает асинхронный обмен событиями и поддерживает долгоживущие соединения, включая WebSocket, а также обычный HTTP. ASGI не делает синхронный код неблокирующим: вызов блокирующей библиотеки внутри `async def` задержит event loop. WSGI-приложение можно адаптировать, но оно сохранит свою модель выполнения. На внешней границе дополнительно ограничивают размер, время и права, а ошибки переводят в стабильный контракт ответа.

:::note[Ссылки для изучения]

1. [ASGI как асинхронный преемник WSGI: scope, receive и send — Флоримонд Манка](https://habr.com/ru/articles/482936/)
   :::

---

## Как middleware обрабатывает запрос и ответ в FastAPI? [#q-transfer-0188]

HTTP middleware оборачивает следующий слой: выполняет код до `call_next(request)`, получает ответ и выполняет код после него. Так добавляют correlation ID, метрики, общие заголовки и сквозную аутентификационную подготовку. Порядок регистрации определяет вложенность обработки и ошибок. Тяжелая бизнес-логика и блокирующий I/O в middleware увеличивают задержку каждого подходящего запроса; зависимости конкретного endpoint лучше выразить через `Depends`. На внешней границе дополнительно ограничивают размер, время и права, а ошибки переводят в стабильный контракт ответа.

:::note[Ссылки для изучения]

1. [Middleware FastAPI: call_next, код до и после ответа и порядок вложенности](https://fastapi.tiangolo.com/ru/tutorial/middleware/)
   :::

---

## Как работает Depends в FastAPI и чем он отличается от middleware? [#q-transfer-0189]

`Depends` строит граф зависимостей конкретной операции: получает пользователя, сессию БД или сервис, переиспользует вложенные зависимости и позволяет подменить их в тесте. Зависимость с `yield` выполняет cleanup после запроса. Middleware охватывает поток запросов на уровне ASGI и подходит сквозным задачам. Проверку, нужную только выбранным endpoint, обычно задают зависимостью, а не условием в глобальном middleware. На внешней границе дополнительно ограничивают размер, время и права, а ошибки переводят в стабильный контракт ответа.

:::note[Ссылки для изучения]

1. [Depends в FastAPI: объявление и переиспользование зависимостей обработчика](https://fastapi.tiangolo.com/ru/tutorial/dependencies/)
   :::

---

## Когда выбрать WebSocket вместо обычного HTTP API? [#q-transfer-0190]

WebSocket выбирают для частого двустороннего обмена с малой задержкой, когда сервер должен отправлять события без нового HTTP-запроса. Обычный HTTP проще масштабировать, кэшировать и повторять; keep-alive и HTTP/2 уже уменьшают стоимость многих запросов. WebSocket требует отдельной авторизации соединения, heartbeat, ограничения буферов, обработки разрыва и протокола восстановления пропущенных событий. Для односторонних обновлений иногда достаточно SSE. На внешней границе дополнительно ограничивают размер, время и права, а ошибки переводят в стабильный контракт ответа.

:::note[Ссылки для изучения]

1. [WebSocket в FastAPI: обмен сообщениями, зависимости и обработка разрыва соединения](https://fastapi.tiangolo.com/ru/advanced/websockets/)
   :::
