API как продукт
OpenAPI, документация, SDK, версии, квоты, идемпотентность, вебхуки, повторная доставка, подписи событий и кабинет разработчика.
Материалы
- GraphQL: учебное API «Академия»
12 уроков: контракт course и query, выполнение без http и последовательное развитие проекта.
- Схема учебного GraphQL API
Контракт Course и Query, выполнение без HTTP.
- Поля, псевдонимы и фрагменты
Выбор проекции и переиспользование набора полей.
- Переменные и HTTP-запрос
JSON-конверт, имя операции и ограниченное тело POST.
- Авторы и вложенные связи
Resolver Course.author и контекст запроса.
- Запись на курс через mutation
Input, уникальность записи и ожидаемые доменные ошибки.
- Nullability и частичный результат
Nullable границы, GraphQLError и безопасное сообщение.
- Пользователь и права доступа
Субъект из локальной демонстрационной сессии и политика enrollment.
- Курсорная пагинация курсов
Connection, сортировка по ID и pageInfo без смещения.
- Пакетная загрузка авторов
Один набор ID на запрос и кэш только в контексте операции.
- Стоимость и пределы запроса
Проверка AST, максимальная глубина, ограничение полей и списков.
- Развитие схемы без обрыва клиентов
Новое поле displayTitle, deprecated title и набор известных операций.
- Клиент учебного каталога
Обработка data/errors, переменных и границы завершённого API.
- Платежи, подписки и платные функции
12 уроков проекта Пространство с полным локальным примером
- Деньги, заказ и платеж — разные объекты
Храним сумму в минимальных единицах и отделяем намерение купить от движения денег.
- Версия тарифа и неизменяемая цена заказа
Выбираем цену на сервере и сохраняем условия покупки отдельно от текущего каталога.
- Идемпотентное создание заказа
Связываем повтор команды с тем же результатом и отклоняем изменение её содержания.
- Адаптер провайдера и повтор создания платежа
Сохраняем платежное намерение до вызова и повторяем запрос с одним ключом.
- Переходы состояния платежа
Применяем подтверждённый снимок без повторной выдачи периода и отката успешного состояния.
- Входящее уведомление и повтор доставки
Используем уведомление как сигнал к чтению провайдера и сохраняем результат обработки.
- Сверка платежей после пропущенного уведомления
Читаем авторитетное состояние и восстанавливаем незавершённые локальные этапы.
- Подписка и границы календарного месяца
Сохраняем оплаченный интервал и календарный якорь для будущих продлений.
- Планировщик повторной оплаты
Создаём одно продление на границу периода и не повторяем списание при новом проходе.
- Отмена продления и незавершённого платежа
Отключаем будущую покупку отдельно от оплаченного периода и текущей попытки.