Hypertext Application Language

Из Википедии, бесплатной энциклопедии

Hypertext Application Language (HAL, Язык Гипертекстовых Приложений) — это разрабатываемый (Internet Draft, или ID) стандарт для определения гипермедиа, таких как ссылки на внешние ресурсы в форматах JSON или XML. Был впервые предложен в июне 2012 года для использования с JSON[1] и с тех пор стал доступен в двух вариантах, JSON и XML. С чем связано два MIME-типа: application/hal+xml и application/hal+json.[2]

HAL был создан простым и легко применимым в различных областях, без необходимости разработки требований структурирования проекта. Поддерживаясь этого стандарта разработчики с минимальным усилиями могут создавать универсальные библиотеки, которые могут быть легко включены в любой API, использующий HAL.

API, использующие HAL, упрощаются с использованием библиотек с открытым исходным кодом позволяющих взаимодействовать с API с помощью JSON или XML. Альтернативой может быть разработка собственного формата, который, в свою очередь, заставляет разработчиков учиться использовать еще один формат.[3]

HAL используется в таких API как Яндекс.Диск.[4]

Соглашение

[править | править код]

HAL структурирован таким образом, чтобы представлять элементы на основе двух концепций: ресурсы и связи. Ресурсы состоят из ссылок URI ресурсов внедренных в стандартные форматы данных (будь то JSON или XML) а не ссылок URI. Ссылки имеют целевой URI, имя (называемый 'rel'), а также дополнительные свойства, предназначенные для учета устаревания и согласования содержимого.[3]

Общий ресурс

{   "_links": {     "self": {       "href": "http://example.com/api/book/hal-cookbook"     }   },   "id": "hal-cookbook",   "name": "Кухня HAL" } 

Внедренный ресурс

{   "_links": {     "self": {       "href": "http://example.com/api/book/hal-cookbook"     }   },   "_embedded": {     "author": {       "_links": {         "self": {           "href": "http://author-example.com"         }       },        "id": "shahadat",       "name": "Shahadat Hossain Khan"     }   },   "id": "hal-cookbook",   "name": "Кухня HAL" } 

Коллекции

{   "_links": {     "self": {       "href": "http://example.com/api/book/hal-cookbook"     },     "next": {       "href": "http://example.com/api/book/hal-case-study"     },     "prev": {       "href": "http://example.com/api/book/json-and-beyond"     },     "first": {       "href": "http://example.com/api/book/catalog"     },     "last": {       "href": "http://example.com/api/book/upcoming-books"     }   },   "_embedded": {     "author": {       "_links": {         "self": {           "href": "http://author-example.com"         }       },       "id": "shahadat",       "name": "Shahadat Hossain Khan"     }   },   "id": "hal-cookbook",   "name": "Кухня HAL" } 

Примечания

[править | править код]
  1. Kelly, Mike. JSON Hypertext Application Language. IETF (7 июня 2012). Дата обращения: 16 октября 2018. Архивировано 14 декабря 2018 года.
  2. Richardson, Leonard; Ruby, Mike Amundsen ; foreword by Sam. 7 // RESTful Web APIs (неопр.). — First. — Sebastopol, CA: O'Reilly, 2013. — ISBN 978-1-4493-5806-8.
  3. 1 2 Kelly, Mike. HAL - Hypertext Application Language A lean hypermedia type (13 июня 2011). Дата обращения: 23 июля 2014. Архивировано 17 июля 2014 года.
  4. Новый REST API Яндекс.Диска и Полигон (22 апреля 2019). Архивировано 22 апреля 2019 года.