Previous Entry Share Next Entry
Дизрапт недели: Swagger
obrizan
Прошу любить и жаловать новую рубрику: "Дизрапт недели". В рубрике я рассказываю о самых прорывных технологиях, которые существенно меняют правила игры в тех или иных сферах.

Дизрапт этой недели — 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 раз.


  • 1
(Deleted comment)
Мы думали насчет расширений. Вижу такие варианты:

1. Вписывать все расширения в модель АПИ и генерировать.
2. Писать клиент параллельно с нуля.
3. Использовать категории или наследование, чтобы расширить функции. Тогда перезаписываться ничего не будет.

> Если мне, например, надо токенов запросы подписывать?

Не совсем понимаю о чем речь. Покажи пример. Что мешает сделать токен параметром метода и подписывать его перед отправкой?

Кстати, утилита swagger-codegen с открытым исходным кодом. Можно форкнуть и какой-то специфический клиент сделать под себя.

  • 1
?

Log in

No account? Create an account