Великолепный API без REST
REST API — великолепная идея, которая плохо подходит для API, у которых небольшое число клиентов и огромное число функций.
Например, у внутреннего API Badoo 5 клиентов по числу платформ, каждый из которых использует не меньше 300 типов запросов. Еженедельно мы вносим не меньше двух десятков изменений и дополнений в API.
Добиться этого на основе принципов REST было бы трудно, и мы придумали собственные инструменты и набор принципов. С их помощью мы вносим изменения с нужной скоростью, не ломая старые клиенты и полностью задокументировав всё по дороге. О них я и расскажу.
О чём пойдёт речь:
1. Мы используем Google Protobuf для документации и как протокол для нативных платформ. На вебе они оборачиваются в JSON через http + server-sent events. Расскажу, как это помогает в документации и в процессах.
2. Все поля и сообщения документируются, для новых функций пишется подробный обзор со скриншотами "по шагам" и примерами сообщений и ответов. Покажу, как это выглядит и зачем нужно.
3. Версионирование осуществляется через флаги "Клиент умеет такую-то возможность" или "Клиент знает о таком-то изменении протокола". Это гораздо лучше, чем номер версии и резко увеличивает гибкость системы. Разберу с конкретными примерами, как это работает.
4. Кроме того, расскажу об отдельной команде в Badoo, занимающейся развитием этой истории.