私は、RESTful API 用のカスタム メディア タイプを設計している最中であり、いくつかの「標準」リンク関係のタイプとセマンティックな意味を調査して、私の設計にある程度の操縦を与えました。
問題を示すために、標準の読み取り、変更、削除メソッドを実行できるリソースがあり、GET、PUT、および DELETE の HTTP イディオムをそれぞれ使用してこれらのメソッドを実装するとします。
RFC5023で定義されているように、「編集」リンク関係 ( IANA リンク レジストリから) を合理的に (再) 使用できます。
"..."edit" の値は、href 属性の値が編集可能なメンバー エントリの IRI であることを指定します。atom:entry 内に表示される場合、href IRI を使用してリソースを取得、更新、および削除できます。そのエントリによって表される....」
このようにして、ユーザーエージェントは、「編集」関係を持つリンクがリソースの GET、PUT、および DELETE を許可することを理解できます。
ただし、ここに問題があります。リソースが GET 操作と DELETE 操作のみをサポートするようにリソースの状態が編集された場合、「編集」関係は正確ではなくなります。
精度を維持するために、i) オプション A: GET と DELETE のみをサポートする別の (複合) リンク関係を指定するか、または ii) オプション B: 可能な状態転送ごとに個別のリンクを指定し、適切なリンクを使用して示す必要があります。許可された状態遷移。後者のアプローチは正確ですが、過度に冗長に見えます。
別の方法として、(オプション C) 「編集」関係をそのままにして、精度の欠如を受け入れることもできます。つまり、リンクは GET、PUT、DELETE セマンティクスを伝達しますが、PUT を試みるユーザー エージェントは HTTP エラーに遭遇します。 405 - メソッドは許可されていません。ただし、サポートされていない状態遷移をクライアントに暗示するため、このアプローチにも満足していません。
要約すると、問題は、リンク関係の一般性と精度のバランスをとる最も賢明な方法は何かということです。