Подтвердить что ты не робот

Какова важность самоподключения в API гипермедиа?

Все статьи и книги, которые я прочитал в REST, повторяют важность добавления ссылок "self" rel к вашим гипермедиа-ответам, но все они освещены в причинах и случаях использования.

Почему вы должны добавить ссылку на личность и как она полезна?

4b9b3361

Ответ 1

Основная причина заключается в том, что клиенты (и даже некоторые серверы) не сохраняют местоположение представления с представлением. Например, если вы wget http://.../foo.json, представление будет сохранено на диск, но URI, в котором он был извлечен, не будет. Если в представлении отсутствует ссылка "я", это вызывает две проблемы:

  • Относительные ссылки в документе могут больше не иметь базы для устранения и поэтому будут "разбиты"; и

  • Клиент не будет иметь встроенной концепции того, где, например, PUT документ возвращается на сервер, если он его модифицирует. Несколько клиентов поддерживают эту информацию независимо, но большинство из них этого не делают.

Важно понимать, что представления могут иметь жизнь вне диалога HTTP и могут даже передаваться через другие протоколы (электронная почта, FTP, книга и т.д.). Поэтому опытный разработчик медиа-типа обычно включает в себя ссылку "Я".

Ответ 2

Когда ресурс возвращается, это может быть не полное представление. Ссылка self должна содержать URL-адрес для доступа к этому полному представлению

например.

GET /objects

[
  {
    "name": "tech",
    "links": [
      "rel": "self",
      "href": "/objects/1"
    ]
  },
  {
    "name": "book",
    "links": [
      "rel": "self",
      "href": "/objects/2"
    ]
  }
]

GET /objects/1

{
  "name": "tech",
  "ratio": 1,
  "precision": 2,
  "links": [
    {
      "rel": "self",
      "href": "/objects/1"
    }
  ]
}