Hypertext Application Language ( HAL ) — это соглашение для определения гипермедиа , например ссылок на внешние ресурсы в коде JSON или XML . Он задокументирован в Internet Draft («работа в процессе»), последняя версия 11 опубликована 10 октября 2023 года. Стандарт был первоначально предложен в июне 2012 года специально для использования с JSON [1] и с тех пор стал доступен в двух вариантах: JSON и XML. Двумя связанными типами MIME являются application/hal+xml и application/hal+json. [2]
HAL был создан, чтобы быть простым в использовании и легко применимым в различных областях , избегая необходимости налагать какие-либо требования на то, как проект будет структурирован. Поддерживая этот подход минимального воздействия, HAL позволил разработчикам создавать библиотеки общего назначения , которые могут быть включены в любой API , использующий HAL. [ необходима цитата ]
API, которые принимают HAL, упрощают использование библиотек с открытым исходным кодом и позволяют взаимодействовать с API с помощью JSON или XML. Альтернативой была бы необходимость разработки собственного формата , что в свою очередь заставило бы разработчиков научиться использовать еще один иностранный формат. [3]
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://example.com/api/author/shahadat" } }, "id" : "shahadat" , "name" : "Шахадат Хоссейн Хан" , "homepage" : "http://author-example.com" } }, "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://example.com/api/author/shahadat" } }, "id" : "shahadat" , "name" : "Шахадат Хоссейн Хан" , "домашняя страница" : "http://author-example.com" } }, "id" : "hal-cookbook" , "name" : "HAL Cookbook" }
{{cite book}}
: CS1 maint: несколько имен: список авторов ( ссылка )