首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RESTful通知:给定资源的默认值

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

Stack Overflow用户
提问于 2014-03-21 12:01:59
回答 4查看 765关注 0票数 1

对于“键盘”对象,我有以下rest结构:

代码语言:javascript
复制
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来完成的:

代码语言:javascript
复制
GET /keyboards/default

然而,这似乎有点误导我,因为每当用户更改其默认值时,资源“默认”都可能发生变化,而且实际上是指向不同特定资源的指针。

我不确定是否有一个更优雅的解决方案,因为前端似乎需要提出两个请求,否则:

代码语言:javascript
复制
GET /keyboards/         -> Revealing the default
GET /keyboards/{id}     -> To get the mappings associated with the keyboard

这似乎是一个更费劲的两步过程。第一个选择是合理的,还是我错过了一个更优雅的实现?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-03-21 12:09:00

有“默认”、“最新”等方便标识符是可以的.

代码语言:javascript
复制
GET /keyboards/default
-> {
       id: 3,

另一个选项是将默认键盘挂起包含/引用资源(如果存在的话)。例如

代码语言:javascript
复制
GET /computer
-> {
      name: foo,
      defaultKeyboard: 3,
      ...

如果您想避免两个请求,可以在键盘对象上使用isDefault。

代码语言:javascript
复制
GET /keyboards

[
  { id: 1, isDefault: false, ... }
  { id: 3, isDefault: true, ... }

它允许您通过查询字符串参数进行筛选。

最后,这不必是OR --您可以为不同的访问模式提供方便的API。

票数 4
EN

Stack Overflow用户

发布于 2014-03-21 12:31:22

与其他体系结构样式相比,必须执行更多的请求是众所周知的,也是RESTful API假定的缺点。由于每个资源都有一个唯一的URL,因此可以更容易地缓存响应。

票数 2
EN

Stack Overflow用户

发布于 2014-03-21 12:11:43

键盘资源是否公开"IsDefault“属性?应该是这样的。因此:

代码语言:javascript
复制
GET /keyboards/

会返回键盘列表。可以检查列表中的键盘资源并选择默认的键盘资源。

您还可以通过将其作为查询参数来解决这个问题:

代码语言:javascript
复制
GET /keyboards?IsDefault=true
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22558227

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档