Hypertext Application Language ( HAL ) - это стандартное соглашение Internet Draft («незавершенное производство») для определения гипермедиа, такого как ссылки на внешние ресурсы в JSON или XML- коде (однако последняя версия HAL Internet-Draft истекла 12 ноября, 2016г.). Стандарт был первоначально предложен в июне 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" : "Шахадат Хосейн Хан" , "домашняя страница" : " 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 " : " Шахадат Хосейн Хан " , " домашняя страница " : " http://author-example.com " } }, " id " : " hal-cookbook " , " name " : " Поваренная книга HAL " }
Смотрите также
Рекомендации
- ↑ Келли, Майк (7 июня 2012 г.). «Язык гипертекстовых приложений JSON» . IETF . Проверено 16 октября 2018 года .
- ^ Ричардсон, Леонард; Руби, Майк Амундсен; предисловие Сэма (2013). «7». RESTful Web API (Первое издание). Севастополь, Калифорния: О'Рейли. ISBN 978-1-4493-5806-8.
- ^ а б Келли, Майк (13.06.2011). «HAL - язык гипертекстовых приложений, тип бережливой гипермедиа» . Проверено 23 июля 2014 года .