Обзор языков описания RESTful API - Overview of RESTful API Description Languages
RESTful (Изобразительное State Transfer) API (интерфейс прикладного программирования) DL (языки описания) формальные языки разработан, чтобы предоставить структурированное описание RESTful веб-API это полезно как для человека, так и для автоматизированной машинной обработки. Языки описания API иногда называют языки описания интерфейса (IDL). Структурированное описание может быть использовано для создания документации для людей. программисты; такую документацию может быть проще читать, чем документацию в свободной форме, поскольку вся документация, созданная одним и тем же инструментом, следует одним и тем же соглашениям о форматировании. Кроме того, язык описания обычно достаточно точен, чтобы позволить автоматическое создание различных программных артефактов, таких как библиотеки, для доступа к API с различных языков программирования, что снимает с программистов бремя их ручного создания.
История
Существуют два предыдущих основных языка описания: WSDL2.0 (Язык описания веб-служб) и WADL (Язык описания веб-приложений). Ни один из них не получил широкого распространения в отрасли для описания RESTful API, ссылаясь на плохую читаемость обоих и WADL, который фактически не может полностью описать RESTful API.[1]
Альтернативы
API, управляемые гипертекстом
Альтернативный подход к созданию RESTful API известен под аббревиатурой HATEOAS (Гипермедиа как двигатель состояния приложения ). При таком подходе клиентское программное обеспечение не записывается в описание статического интерфейса, передаваемое через документацию. Вместо этого клиенту предоставляется набор точек входа, и API обнаруживается динамически посредством взаимодействия с этими конечными точками. HATEOAS был представлен в Рой Филдинг докторская диссертация Архитектурные стили и проектирование сетевых архитектур программного обеспечения. HATEOAS был оригинальным видением RESTful API, которое отличало их от RPC механизмы.[2]
Список списков рассылки RESTful API
- Язык описания веб-сервисов (WSDL)
- Язык описания веб-приложений (WADL)
- CloudRail
- URL: http://cloudrail.com/
- Разработчик: licobo GmbH
- Конечные точки Google Cloud
- URL: https://cloud.google.com/endpoints/, https://developers.google.com/discovery
- разработчик: Google
- Протокол открытых данных (OData)
- ОАЗИС стандарт[3]
- URL: http://www.odata.org/
- разработчик: Microsoft
- Спецификация OpenAPI
- URL: https://openapis.org/
- разработчик: Open API Initiative (OAI), первоначально разработанная как спецификация Swagger Wordnik, Программное обеспечение SmartBear
- Язык описания службы RESTful (РСДЛ)
- URL: http://www.balisage.net/Proceedings/vol10/html/Robie01/BalisageVol10-Robie01.html
- Разработчик: Михаил Пастернак
- Словарь Hydra Core (Гидра)
- URL: http://www.hydra-cg.com/spec/latest/core/
- разработчик: Hydra W3C Community Group, http://www.hydra-cg.com/
- Язык моделирования RESTful API (RAML)
- URL: http://raml.org/
- разработчик: Mulesoft, http://www.mulesoft.com/
- Гипермедиа
- Схема API
- URL: https://apiblueprint.org/
- застройщик пасека https://apiary.io/company
- Конструктор API
- URL: https://www.apibuilder.io/
- разработчики: HBC, Flow Commerce
- Документы ввода / вывода
- URL: https://github.com/mashery/iodocs
- разработчик: Машеры, http://www.mashery.com/
- Apache Avro
- Барристер
- URL: http://barrister.bitmechanic.com/
- разработчик: Джеймс Купер[4]
- SERIN - Семантические спокойные интерфейсы[5]
- URL: http://www.semanticinterface.org
- разработчики: Бруно Мунис, Хермано Лира, Хосе Ренато Виллела Дантас, Тадеу Нуньес, Лаура Чавес, Хулио Сезар Кампос Нето, Педро Порфирио Мунис Фариас
Список языков описания данных
Значительная часть описания RESTful API - это спецификация возвращаемых структур данных. IDL может либо указать свой собственный формат, либо использовать существующий формат описания данных. Замечательный пример, который используют многие RESTful API DL: Схема JSON.
- json: api
- http://jsonapi.org/
- Запускается как адаптер REST для Ember Данные
- Схема JSON
- используется OpenAPI, Google APIs Discovery,[6] Документы ввода / вывода
- Apache Avro
- https://avro.apache.org/
- как язык описания интерфейса, так и язык описания данных
- JSON-RPC 2.0
- используется барристером
Сравнение списков рассылки RESTful API
Сообщество RESTful API DL активно, и ситуация все еще меняется. Согласно презентации Akana, наиболее активными проектами в этой области являются OpenAPI, RAML и API Blueprint.[1]
Спонсор | Начальная фиксация | Последний стабильный выпуск | Стабильная дата выхода | Лицензия на программное обеспечение[7] | Формат | Открытый исходный код | Генерация кода (клиент) | Генерация кода (сервер) | |
---|---|---|---|---|---|---|---|---|---|
RAML | MuleSoft | Сентябрь 2013 | 1.0 | 16 мая, 2016 | Apache 2.0 | YAML | да | да | да |
Схема API | Пасека | Апрель 2013 | Массачусетский технологический институт | Markdown | да | Нет | Нет | ||
OpenAPI | Инициатива открытого API (OAI) | Июль 2011 г. | 3.0 | 26 июля 2017 г. | Apache 2.0 | JSON или YAML | да | да | да |
СЕРИН | УНИФОР | 2011 | 2.0 | Декабрь 2014 г. | Creative Commons | RDF | да | Нет | да |
Каркасы
Многие серверные инфраструктуры взаимодействуют с одним или несколькими IDL.
- Фреймворк Gugamarket REST API
- IDL: OpenAPI
- URL: https://pliik.github.io/gugamarket/
- разработчик: https://github.com/pliik
использованная литература
- ^ Филдинг, Рой. «API REST должны быть гипертекстовыми». Получено 4 ноября 2015.
- ^ «Протокол открытых данных OASIS (OData) TC - OASIS».
- ^ «Барристер ПКР - О компании».
- ^ Лира, Хермано Альбукерке; Дантас, Хосе Ренато Виллела; Мунис, Бруно де Азеведо; Нуньес, Тадеу Матос; Фариас, Педро Порфирио Мунис (01.01.2015). «Подход к поддержке целостности данных для веб-служб с использованием семантических интерфейсов RESTful». Материалы 24-й Международной конференции по всемирной паутине. WWW '15 Товарищ. Нью-Йорк, Нью-Йорк, США: ACM: 1485–1490. Дои:10.1145/2740908.2743042. ISBN 9781450334730.
- ^ https://developers.google.com/discovery/v1/reference/apis
- ^ Лицензии здесь представляют собой краткое изложение и не считаются полными заявлениями о лицензиях. Некоторые пакеты могут использовать библиотеки под разными лицензиями.