Дизрапт недели: Swagger
Прошу любить и жаловать новую рубрику: "Дизрапт недели". В рубрике я рассказываю о самых прорывных технологиях, которые существенно меняют правила игры в тех или иных сферах.
Дизрапт этой недели — Swagger (читается "свогер") — это спецификация описания АПИ веб-сервисов.
Зачем это нужно? Т. к. спецификация машинно-читаемая, то на ее основе можно делать разные полезные вещи:
а) автоматически генерировать документацию к веб-сервису;
б) автоматически генерировать АПИ-клиенты к этому сервису;
в) автоматически генерировать шаблоны веб-сервисов;
Это очень актуально для микросервисных архитектур, где один микросервис может эксплуатироваться другими микросервисами, написанными на разных языках.
Спецификация описывается на YAML или JSON. Я предпочитаю первый вариант, потому что он самый понятный для человека. Вот так выглядит спецификация:
Вот так выглядит фрагмент документации, построенной по этой спецификации:
А теперь самое интересное: есть генератор АПИ-клиентов для множества языков:
android, async-scala, csharp, dart, flash, python-flask, java, javascript, jaxrs, inflector, jmeter, nodejs, objc, perl, php, python, qt5cpp, ruby, scala, scalatra, silex-PHP, sinatra, slim, spring-mvc, dynamic-html, html, swagger, swagger-yaml, swift, tizen, typescript-angular, typescript-node, akka-scala, CsharpDotNet2, clojure
Вот небольшой фрагмент АПИ-клиента для языка Objective-C:
Детали реализации обмена данными по HTTP протоколу скрыты от разработчика. Не нужно сосредотачиваться на таких деталях. Уже есть готовые высокоуровневые методы работы с веб-сервисом. Можно описать АПИ один раз и генерировать сразу два клиента, например, для мобильного приложения и для веб-сайта.
Такой способ описания АПИ сервера и генерация клиентов повышает производительность разработчика минимум в 10 раз.