Http RESTful通知:给定资源的默认值
对于“键盘”对象,我有以下rest结构:Http RESTful通知:给定资源的默认值,http,rest,url,Http,Rest,Url,对于“键盘”对象,我有以下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
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
然而,这对我来说似乎有点误导,因为每当用户更改默认值时,资源“default”可能会更改,实际上是指向不同特定资源的指针
我不确定是否有更优雅的解决方案,因为前端似乎需要提出两个请求:
GET /keyboards/ -> Revealing the default
GET /keyboards/{id} -> To get the mappings associated with the keyboard
这似乎是一个更费力的两步过程。第一个选项是否合理,或者我是否缺少一个更优雅的实现?可以使用方便的标识符,如“默认”、“最新”等
GET /keyboards/default
-> {
id: 3,
另一个选项是挂起包含/引用资源(如果有)的默认键盘。比如说
GET /computer
-> {
name: foo,
defaultKeyboard: 3,
...
如果要避免两个请求,可以在键盘对象上设置isDefault
GET /keyboards
[
{ id: 1, isDefault: false, ... }
{ id: 3, isDefault: true, ... }
它允许您通过查询字符串参数进行筛选
最后,这不一定是一个或-您可以使用所有这些为不同访问模式提供方便的API。可以使用方便的标识符,如“默认”、“最新”等
GET /keyboards/default
-> {
id: 3,
另一个选项是挂起包含/引用资源(如果有)的默认键盘。比如说
GET /computer
-> {
name: foo,
defaultKeyboard: 3,
...
如果要避免两个请求,可以在键盘对象上设置isDefault
GET /keyboards
[
{ id: 1, isDefault: false, ... }
{ id: 3, isDefault: true, ... }
它允许您通过查询字符串参数进行筛选
最后,这不一定是或-您可以使用所有这些为不同访问模式提供方便的API。您的键盘资源是否公开IsDefault属性?应该这样。因此:
GET /keyboards/
将返回一个键盘列表。您可以检查列表中的键盘资源,并选择默认的键盘资源
您还可以通过将其作为查询参数来解决此问题:
GET /keyboards?IsDefault=true
您的键盘资源是否公开IsDefault属性?应该这样。因此:
GET /keyboards/
将返回一个键盘列表。您可以检查列表中的键盘资源,并选择默认的键盘资源
您还可以通过将其作为查询参数来解决此问题:
GET /keyboards?IsDefault=true
与其他架构风格相比,必须执行更多的请求是RESTful API众所周知的缺点。
与此相对应的是,由于每个资源都有一个唯一的URL,响应可能更容易缓存。与其他体系结构样式相比,必须执行更多的请求,这是RESTful API的一个众所周知且假定的缺点。
与此相对应的是,由于每个资源都有一个唯一的URL,因此可以更轻松地缓存响应。拥有便利/键盘/默认标识符没有什么错,只要其可缓存性定义正确,在这种情况下,这可能是告诉客户端根本不要缓存它。拥有一个方便/键盘/默认标识符没有什么错,只要它的可缓存性被正确定义,在这种情况下,这可能是告诉客户端根本不要缓存它