Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Http RESTful通知:给定资源的默认值_Http_Rest_Url - Fatal编程技术网

Http RESTful通知:给定资源的默认值

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

对于“键盘”对象,我有以下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
然而,这对我来说似乎有点误导,因为每当用户更改默认值时,资源“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,因此可以更轻松地缓存响应。

拥有便利/键盘/默认标识符没有什么错,只要其可缓存性定义正确,在这种情况下,这可能是告诉客户端根本不要缓存它。

拥有一个方便/键盘/默认标识符没有什么错,只要它的可缓存性被正确定义,在这种情况下,这可能是告诉客户端根本不要缓存它