假设我想设计一个用于管理列表的 REST 存储。列表条目看起来像这样:
<listentry>
<position>0</position> <!-- position in the list -->
<data>interesting information</data> <!-- entry data -->
</listentry>
我会这样设计资源:
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 资源吗?如果没有,有没有办法设计一个休息资源,以便它可以管理一个列表?
编辑
感谢您的投入,它确实有帮助。我同意 nategood 和 darrel 的观点,即使用 first 和 last 作为特殊标识符是完全合法的(另请参阅我的问题)。当然,我可以不使用 Saintedlama 建议的那些神奇标识符,但这会剥夺我在我现在想向您展示的帖子请求中使用它们的可能性。
在再次考虑设计时,我想在我的资源设计建议中添加两个额外的功能。
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 ...
你怎么看?