現在、REST APIを実装しようとしています。私は、個々のリソース間に多数の関係を持つリソース・モデルを持っています。REST APIでLINKとUNLINKのHTTP動詞を使用する
私の質問は、どのようにしてRESTfulな方法で2つの既存のリソースを互いに結びつける(関係を確立する)のですか?
私が見つけた解決策の1つは、LINKとUNLINK HTTP動詞の使用でした。 APIコンシューマは、LINKとURI:/ resource1 /:id1/resource2 /:id2の2つのリソースをリンクできます。
このソリューションの問題は、LINKおよびUNLINK動詞のサポートの欠如です。 http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.htmlまたはhttp://en.wikipedia.org/wiki/Hypertext_Transfer_Protocolには動詞が記載されておらず、主に「忘れられている」ようです。しかし、元のRFC 2068では、それが存在すると述べています。
私はこのソリューションが本当に好きです。ただし、LINK/UNLINKのサポートが不足しているため、多くのAPIコンシューマ/クライアントが解決策に対処できないことが懸念されます。これは受け入れられる解決策ですか、またはRESTful APIの既存のリソースをリンクするためのより優れた、より洗練されたソリューションがありますか?私は(会社内部、特注)ウェブアプリでLINK
とUNLINK
を使用
おかげ
なぜ2つのリソースをリンクするリンクリソースを作成しないのですか? –
これは私が検討していたもう一つの解決策です(この[SOの質問]でかなり処理されています(http://stackoverflow.com/questions/6324547/how-to-handle-many-to-many-relationships-in-a-restfulしかし、問題は、すべてのタイプのリレーションに対して、新しいリソース(タイプ)を定義する必要があるということです。これはリソースモデルを過度に複雑にします(APIの消費者はもっと多くの種類のリソースを認識しなければならないので特に実用的ではありません)。 LINK/UNLINKはそれを過度に複雑化しません:関係を確立することは非常に予測可能で使いやすくなります。しかし、もしLINK/UNLINKがほとんどサポートされていなければ... –