Получи случайную криптовалюту за регистрацию!

С приходом микросервисов стало разрабатываться гораздо больше | xpinjection

С приходом микросервисов стало разрабатываться гораздо больше API на бэкенде, теперь не только для обслуживания UI, но и для коммуникации между микросервисами. И, понятное дело, его нужно тестировать. В результате, происходит существенное дублирование усилий:

- автор API делает модельки для серверной части, добавляя все правила валидации;
- автор API поверх моделек делает документацию (надеюсь, генерируемую), где дублирует валидационные правила;
- все клиенты тоже делают модельки и определяют клиентские интерфейсы (надеюсь, декларативно);
- для тестов снова нужно сделать модельки и определить клиентские интерфейсы на удобном для тестирования фреймворке;
- а ещё стабы и ряд других вещей...

И это приходится поддерживать в рабочем состоянии по мере эволюционирования и версионирования API.

Благо, уже давно появился стандарт OpenAPI спецификаций и теперь можно полноценно реализовать “API first” подход. Единственным источником правды при таком подходе является спецификация, которая хранится в отдельном git репозитории. Ее изменения полностью под контролем и строго версионированы. Мало того, на каждое изменение можно вызвать в рамках CI пайплайна инструмент для проверки обратной совместимости и форсировать изменение официальной версии.

Из данного репозитория при каждом изменении генерируется серверная часть для простоты реализации API, клиенты на выбранных фреймворках, тестовые клиенты с ассертами и тестовыми моделями, удобные стабы и т.д. Это не только упрощает всем жизнь, но и позволяет быстро выявлять несовместимости и сигнализировать о них. А так как генераторы используют в основе шаблоны, то можно реализовать практически любые идеи.

А вы используете подобный подход? Поделитесь в комментариях.