Перейти к содержимому
Skein

apis

API

Как программы общаются друг с другом по сети — основные стили (REST, GraphQL, gRPC) и как спроектировать такой интерфейс, чтобы им было удобно пользоваться и при изменениях.

9 юнитов·46 уроков·~39 ч

Начать трек →
00

С нуля

Перед senior-материалом: что вообще такое API и горстка слов, которые остальной трек считает уже знакомыми.
01

Rest modeling

План

Моделирование REST-ресурсов: существительные, нужные клиенту, а не твои глаголы и таблицы

REST API — это модель ресурсов, важных клиенту. Два провала, которые бьют в проде: превращать действия в…

Собрано: 40% Срок: когда профинансируют Поддержать юнит →
02

Status codes real

План

Статус-коды, которые реально важны в проде

Статус-код — это контракт, который читают три машины раньше любого человека: кэши, дашборды и логика ретраев. Ошибиться…

Собрано: 72% Срок: когда профинансируют Поддержать юнит →
03

Pagination

План

Пагинация на масштабе: почему OFFSET умирает, а keyset-курсоры живут

OFFSET заставляет базу просканировать и выбросить каждую строку до твоей страницы, поэтому глубокие страницы тормозят…

Собрано: 44% Срок: когда профинансируют Поддержать юнит →
04

Openapi

План

OpenAPI: сделать контракт источником истины, а не доками

OpenAPI окупается, только когда спеку проверяют — генерируют клиентов, валидируют запросы и роняют CI на ломающем…

Собрано: 51% Срок: когда профинансируют Поддержать юнит →
05

Grpc protobuf

План

gRPC и Protobuf: бинарный контракт и его цена

gRPC меняет человекочитаемый JSON на бинарный формат, привязанный к схеме: он в 4-10 раз быстрее и заметно компактнее,…

Собрано: 61% Срок: когда профинансируют Поддержать юнит →
06

GraphQL N+1 и цена вложенных резолверов

Почему один GraphQL-запрос превращается в 1000 SQL-вызовов, как DataLoader чинит это за один тик event loop, и какие complexity / depth / persisted-query барьеры удерживают публичные API в живых.
07

Rate limiting

План

Rate limiting: алгоритмы, всплеск на границе и счётчик в Redis

Fixed window дёшев, но пропускает 2x-всплеск на границе окна; token bucket его сглаживает. Главный продакшен-урок:…

Собрано: 60% Срок: когда профинансируют Поддержать юнит →
08

Putting it together

План

Проектирование и ревью публичного API от начала до конца

Каждое решение в API связано: плохое моделирование ресурсов вынуждает злоупотреблять статус-кодами, из-за чего клиенты…

Собрано: 40% Срок: когда профинансируют Поддержать юнит →

Проекты по этому треку

Guided-проекты, которые закрепляют изученное здесь.

◆ Проекты

Сервис фич-флагов

Собери небольшой сервис флагов с правилами таргетинга, процентными раскатками и типизированным SDK, который вычисляет флаги на клиенте из закешированного набора правил.

◆ Проекты

Мини-CRUD API

Собери свой первый настоящий бэкенд: крошечный HTTP API, который создаёт, читает, обновляет и удаляет заметки — на SQLite, чтобы данные пережили перезапуск. Ты пройдёшь путь от сервера в одну строку с «hello» до небольшого сервиса, который проверяет ввод и хранит строки, — честно, шаг за шагом.

◆ Проекты

Мини OAuth 2.0 + PKCE логин

Реализуй поток authorization-code + PKCE целиком против реального провайдера, чтобы понять каждый редирект и токен, а не доверять библиотеке.

◆ Проекты

Загрузка через presigned URL

Прямая загрузка в хранилище через presigned URL с ограничениями размера и content-type и webhook завершения, проверяющим, что объект действительно прибыл, — чтобы API-сервер никогда не касался байт файлов.

◆ Проекты

Распределённый rate limiter

Собери token-bucket лимитер, который держится поперёк многих инстансов приложения за счёт счётчика в Redis, а не в памяти процесса.

◆ Проекты

Todo CRUD на SQLite

Твой второй бэкенд: API для todos, где задачи живут в SQLite, а не в памяти — так они переживают перезапуск, и ты узнаёшь реальную цену хранения.

◆ Проекты

Типобезопасный SDK для API

Собери клиент, которому другие инженеры действительно будут доверять: типизированный SDK поверх настоящего HTTP API, где неправильное поле, пропущенный вариант и ответ, соврамший о своей форме, ловит компилятор — а не падение в проде. Ты смоделируешь домен через размеченные объединения и дженерики, проверишь каждый ответ на границе и дашь выводу типов донести точные типы до места вызова, не оставив ни одного `any`, которым прикрывают дыры.

◆ Проекты

URL-сокращатель под нагрузкой

Собери URL-сокращатель, который выдерживает настоящий трафик, — а потом эксплуатируй его: задеплой, наблюдай и разберись с инцидентом, когда одна горячая ссылка плавит твой кэш.

Следующий трек

Базы данных

Как базы данных хранят и быстро находят данные, сохраняют их целостность, когда пишут сразу много пользователей, и растут вместе с объёмом.