21

私がRESTで読んだすべての記事と本は、ハイパーメディア応答に「自己」relリンクを追加することの重要性を繰り返していますが、それらはすべて理由と使用例に光を当てています。

なぜセルフリンクを追加する必要があり、それはどのように役立ちますか?

4

2 に答える 2

20

主な理由は、クライアント (および一部のサーバー) が表現の場所を表現とともに保存しないことです。たとえばwget http://.../foo.json、表現はディスクに保存されますが、取得された URI は保存されません。表現に「自己」リンクが埋め込まれていない場合、次の 2 つの問題が発生します。

  1. ドキュメント内の相対リンクは、解決するためのベースを持たない可能性があるため、「壊れて」しまいます。と

  2. PUTクライアントには、ドキュメントを変更した場合にドキュメントをサーバーに戻すなどの概念が組み込まれていません。少数のクライアントはこの情報を個別に保持していますが、ほとんどのクライアントは保持していません。

表現は、HTTP 会話の範囲外で使用される可能性があり、他のプロトコル (電子メール、FTP、書籍など) を介して転送される可能性があることを理解することが重要です。したがって、経験豊富なメディア タイプの設計者は通常、「自己」リンクを含めます。

于 2013-01-06T18:40:27.450 に答える
4

リソースが返されるとき、それは完全な表現ではないかもしれません。リンクは、その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"
    }
  ]
}      
于 2017-01-06T20:12:56.993 に答える