是否正在创建REST子资源以获取列表的最后一个或第一个元素?

时间:2012-02-21 16:06:41

标签: web-services rest

假设我已经构建了一个REST服务来制作类似这样的注释:

GET    /notes/     // gives me all notes
GET    /notes/{id} // gives the note with the identified by {id}
POST   /notes/     // creates note
PUT    /notes/{id} // updates note identified by {id}
DELETE /notes/{id} // delete note

现在我想创建允许我获取/更新/删除第一个或最后一个音符的子资源。

GET    /notes/first // get first note added
PUT    /notes/last  // updates last note added
DELETE /notes/first // delete first note

这违反了REST的原则吗?

提前谢谢你:)

修改

PS:在这个例子中,我希望ID总是一个数字

1 个答案:

答案 0 :(得分:2)

以我的拙见,这是完全合法和可取的。我特别喜欢DELETE /notes/first的语义,但也考虑POST /notes/first - 在第一个之前添加一个新笔记。

在您的情况下,firstlast是某种特殊的魔术标识符或占位符。另一方面,有哪些替代方案?