Hypertext Application Language (HAL, Язык Гипертекстовых Приложений) — это разрабатываемый (Internet Draft, или ID) стандарт для определения гипермедиа, таких как ссылки на внешние ресурсы в форматах JSON или XML. Был впервые предложен в июне 2012 года для использования с JSON и с тех пор стал доступен в двух вариантах, JSON и XML. С чем связано два MIME-типа: application/hal+xml и application/hal+json.
HAL был создан простым и легко применимым в различных областях, без необходимости разработки требований структурирования проекта. Поддерживаясь этого стандарта разработчики с минимальным усилиями могут создавать универсальные библиотеки, которые могут быть легко включены в любой API, использующий HAL.
API, использующие HAL, упрощаются с использованием библиотек с открытым исходным кодом позволяющих взаимодействовать с API с помощью JSON или XML. Альтернативой может быть разработка собственного формата, который, в свою очередь, заставляет разработчиков учиться использовать еще один формат.
HAL используется в таких API как Яндекс.Диск.
Соглашение HAL структурирован таким образом, чтобы представлять элементы на основе двух концепций: ресурсы и связи. Ресурсы состоят из ссылок URI ресурсов внедренных в стандартные форматы данных (будь то JSON или XML) а не ссылок URI. Ссылки имеют целевой URI, имя (называемый 'rel'), а также дополнительные свойства, предназначенные для учета устаревания и согласования содержимого.
Примеры Общий ресурс { "_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" }
См.также HATEOAS CURIE, (или компактный с URI)
Примечания
Ссылки JSON Hypertext Application Language latest draft Hypermedia — то без чего ваше API не совсем REST
Категория:JSON Категория:Форматы данных Категория:Языки разметки Категория:Стандарты на основе XML Категория:Стандарты W3C