对于“键盘”对象,我有以下rest结构:
GET /keyboards/ -> Lists user keyboards
POST /keyboards/ -> Creates new keyboard
GET /keyboards/{id} -> Get specific keyboard by id
PUT /keyboards/{id} -> Update specific keyboard by id
DELETE /keyboards/{id} -> Delete specific keyboard by id前端使用设置为用户默认键盘的任何键盘,或者,如果用户没有自定义键盘集,则只返回一般默认设置。
目前,这是通过请求另一个URL来完成的:
GET /keyboards/default然而,这似乎有点误导我,因为每当用户更改其默认值时,资源“默认”都可能发生变化,而且实际上是指向不同特定资源的指针。
我不确定是否有一个更优雅的解决方案,因为前端似乎需要提出两个请求,否则:
GET /keyboards/ -> Revealing the default
GET /keyboards/{id} -> To get the mappings associated with the keyboard这似乎是一个更费劲的两步过程。第一个选择是合理的,还是我错过了一个更优雅的实现?
发布于 2014-03-21 12:09:00
有“默认”、“最新”等方便标识符是可以的.
GET /keyboards/default
-> {
id: 3,另一个选项是将默认键盘挂起包含/引用资源(如果存在的话)。例如
GET /computer
-> {
name: foo,
defaultKeyboard: 3,
...如果您想避免两个请求,可以在键盘对象上使用isDefault。
GET /keyboards
[
{ id: 1, isDefault: false, ... }
{ id: 3, isDefault: true, ... }它允许您通过查询字符串参数进行筛选。
最后,这不必是OR --您可以为不同的访问模式提供方便的API。
发布于 2014-03-21 12:31:22
与其他体系结构样式相比,必须执行更多的请求是众所周知的,也是RESTful API假定的缺点。由于每个资源都有一个唯一的URL,因此可以更容易地缓存响应。
发布于 2014-03-21 12:11:43
键盘资源是否公开"IsDefault“属性?应该是这样的。因此:
GET /keyboards/会返回键盘列表。可以检查列表中的键盘资源并选择默认的键盘资源。
您还可以通过将其作为查询参数来解决这个问题:
GET /keyboards?IsDefault=truehttps://stackoverflow.com/questions/22558227
复制相似问题