Прошу любити й шанувати нову рубрику: «Дизрапт тижня». У рубриці я розповідаю про найпроривніші технології, які суттєво змінюють правила гри в тих чи інших сферах.
Дизрапт цього тижня — Swagger (читається «своґер») — це специфікація опису API вебсервісів.
Навіщо це потрібно? Оскільки специфікація машинозчитувана, то на її основі можна робити різні корисні речі:
а) автоматично генерувати документацію до вебсервісу;
б) автоматично генерувати API-клієнти до цього сервісу;
в) автоматично генерувати шаблони вебсервісів;
Це дуже актуально для мікросервісних архітектур, де один мікросервіс може експлуатуватися іншими мікросервісами, написаними різними мовами.
Специфікація описується на YAML або JSON. Я віддаю перевагу першому варіанту, бо він найзрозуміліший для людини. Ось так виглядає специфікація:

Ось так виглядає фрагмент документації, побудованої за цією специфікацією:

А тепер найцікавіше: є генератор API-клієнтів для багатьох мов:
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
Ось невеликий фрагмент API-клієнта для мови Objective-C:

Деталі реалізації обміну даними за протоколом HTTP приховані від розробника. Не потрібно зосереджуватися на таких деталях. Уже є готові високорівневі методи роботи з вебсервісом. Можна описати API один раз і генерувати одразу два клієнти, наприклад, для мобільного застосунку і для вебсайту.
Такий спосіб опису API сервера і генерація клієнтів підвищує продуктивність розробника мінімум у 10 разів.