Русская Википедия: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"
}

См.также

Примечания

Шаблон:Reflist

Ссылки


Шаблон:Web-stub