Язык гипертекстовых приложений
Язык гипертекстовых приложений ( HAL ) — это соглашение для определения гипермедиа , например ссылок на внешние ресурсы в JSON или XML коде . Он задокументирован в Интернет-проекте («в разработке»), последняя версия 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 Cookbook"
}
Встроенный ресурс
{
"_links": {
"self": {
"href": "http://example.com/api/book/hal-cookbook"
}
},
"_embedded": {
"author": {
"_links": {
"self": {
"href": "http://example.com/api/author/shahadat"
}
},
"id": "shahadat",
"name": "Shahadat Hossain Khan",
"homepage": "http://author-example.com"
}
},
"id": "hal-cookbook",
"name": "HAL Cookbook"
}
Коллекции
{
"_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": "Shahadat Hossain Khan",
"homepage": "http://author-example.com"
}
},
"id": "hal-cookbook",
"name": "HAL Cookbook"
}
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Келли, Майк (7 июня 2012 г.). «Язык гипертекстовых приложений JSON» . IETF . Проверено 16 октября 2018 г.
- ^ Ричардсон, Леонард; Руби, Майк Амундсен; предисловие Сэма (2013). «7». Веб-API RESTful (первое издание). Севастополь, Калифорния: О'Рейли. ISBN 978-1-4493-5806-8 .
{{cite book}}
: CS1 maint: несколько имен: список авторов ( ссылка ) - ^ Перейти обратно: а б Келли, Майк (13 июня 2011 г.). «HAL — язык гипертекстовых приложений. Экономичный тип гипермедиа» . Проверено 23 июля 2014 г. .