私がRESTで読んだすべての記事と本は、ハイパーメディア応答に「自己」relリンクを追加することの重要性を繰り返していますが、それらはすべて理由と使用例に光を当てています。
なぜセルフリンクを追加する必要があり、それはどのように役立ちますか?
私がRESTで読んだすべての記事と本は、ハイパーメディア応答に「自己」relリンクを追加することの重要性を繰り返していますが、それらはすべて理由と使用例に光を当てています。
なぜセルフリンクを追加する必要があり、それはどのように役立ちますか?
主な理由は、クライアント (および一部のサーバー) が表現の場所を表現とともに保存しないことです。たとえばwget http://.../foo.json
、表現はディスクに保存されますが、取得された URI は保存されません。表現に「自己」リンクが埋め込まれていない場合、次の 2 つの問題が発生します。
ドキュメント内の相対リンクは、解決するためのベースを持たない可能性があるため、「壊れて」しまいます。と
PUT
クライアントには、ドキュメントを変更した場合にドキュメントをサーバーに戻すなどの概念が組み込まれていません。少数のクライアントはこの情報を個別に保持していますが、ほとんどのクライアントは保持していません。
表現は、HTTP 会話の範囲外で使用される可能性があり、他のプロトコル (電子メール、FTP、書籍など) を介して転送される可能性があることを理解することが重要です。したがって、経験豊富なメディア タイプの設計者は通常、「自己」リンクを含めます。
リソースが返されるとき、それは完全な表現ではないかもしれません。リンクは、その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"
}
]
}