Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про FastAPI: rest, rpc, graphql

Какие паттерны проектирования API существуют?

Вопрос проверяет знание распространённых подходов к построению структуры и взаимодействия API.

Короткий ответ

Существуют разные паттерны, которые помогают делать API понятным, расширяемым и удобным для поддержки.
Наиболее известные паттерны — REST, RPC, GraphQL, gRPC и Webhooks.
Они различаются способом передачи данных, форматом взаимодействия и степенью гибкости.
Новичку важно понимать, в чём сильные и слабые стороны каждого подхода.
Чаще всего выбирают REST или gRPC, в зависимости от задачи.

Длинный ответ

Паттерны проектирования API

Существуют несколько распространённых подходов к построению API, каждый из которых решает конкретные задачи и подходит для разных сценариев.

1. REST (Representational State Transfer)

Определение: стиль архитектуры API, основанный на использовании HTTP-методов и ресурсов.

  • Прост в реализации

  • Подходит для большинства CRUD-систем

  • Хорошо работает с кэшированием

  • Данные обычно передаются в JSON

Пример запроса:

GET /users/1

Когда применять: когда нужен простой, понятный, стандартизированный HTTP-интерфейс.

2. RPC (Remote Procedure Call)

Определение: модель API, где клиент вызывает удалённые функции как локальные.

  • Минимум абстракций

  • Хорош для внутренних микросервисов

  • Может использовать HTTP или бинарные протоколы

Пример:

{"method": "get_user", "params": {"id": 1}}

Когда применять: когда важна скорость и простота вызовов.

3. GraphQL

Определение: язык запросов, позволяющий клиенту выбирать, какие данные ему нужны.

  • Избегает «overfetching» и «underfetching»

  • Хорош для сложных UI

  • Требует схемы

Пример:

query {
  user(id: 1) { id name }
}

Когда применять: когда клиентам требуется гибкость в запросах.

4. gRPC

Определение: высокопроизводительный бинарный протокол поверх HTTP/2.

  • Очень быстрый

  • Строгая типизация

  • Требует .proto-описаний

Пример:

service UserService {
  rpc GetUser (UserRequest) returns (UserResponse);
}

Когда применять: при взаимодействии микросервисов, где нужна скорость.

5. Webhooks

Определение: механизм, позволяющий серверу отправлять события клиенту.

  • Работает по push-модели

  • Полезен для асинхронных уведомлений

Когда применять: когда нужно реагировать на события в реальном времени.

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    4

  • Сложность:

    4

Навыки

  • FastAPI

    FastAPI

Ключевые слова

#rest

#rpc

#graphql

Подпишись на Python Developer в телеграм

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.