リストを管理するために使用するRESTストアを設計したいとしましょう。リストを管理するためのRESTリソースを設計する
GET /list/ // returns all list entries
GET /list/{position} // returns the list entry at {position}
DELETE /list/{position} // delete list entry at {position}
PUT /list/first // update first list entry
PUT /list/last // update last list entry
PUT /list/{position} // update entry at {position}
POST /list/last // inserts a new list entry at last position
POST /list/first // inserts a new list entry at first position
POST /list/{position} // inserts a new list entry at {position} and moves all
// entries down the list starting from the entry that
// was at {position} before the insertion.
これは法的なRESTリソースです:私はこのようなリソースを設計します
<listentry>
<position>0</position> <!-- position in the list -->
<data>interesting information</data> <!-- entry data -->
</listentry>
: リストエントリは次のようになりますか?そうでなければ、リストを管理できるように残りのリソースを設計する方法がありますか?
EDITは、それがdefinetly助け入力いただき、ありがとうございます。 私はnategoodとdarrelに、最初と最後の特殊な識別子の使用が完全に合法であることに同意します(これについてはquestionも参照してください)。もちろん、私はSaintedlamaによって提案されているような魔法の識別子なしでもやり遂げることができますが、私は今あなたに贈りたい投稿要求にそれらを使用する可能性を奪います。
デザインについてもう一度考えてみましょう。自分のリソース設計の提案に2つの追加機能を追加したいと思います。
POST /list/{position1}/swap/{position2} // swap the position of two elements
POST /list/{position1}/move/{position2} // move the element at {position1} to
// {position2} and move all entries
// down the list starting from the
// entry that was at {position2}
//possible uses
POST /list/first/swap/last // swap first with last element
POST /list/42/swap/2 // swap element 42 with element 2
POST /list/first/move/42 // move first element to position 42
// you get the idea ...
あなたはどう思いますか?
リストに管理されているリソースへの参照を保存しますか? BTW最初と最後を削除するための回避策はありますが、特別な識別子の使用に関する編集を参照してください。 – Zounadire
後半の編集については申し訳ありませんが、時にはアイディアが成長することもあります。私は、操作の状態を確認するためにハンドルを返すというのが理想的です。 – Zounadire