api - REST 中的建模操作

标签 api http rest

我正在为网络设备的管理系统(我们称之为系统 A)创建一个 REST 接口(interface),并且一切正常。 A 从另一个后端系统(让我们称这个系统为 B)获取设备信息并将其索引到数据库中,然后每当客户端通过 REST 接口(interface)请求信息时,它就会将其作为 JSON 返回。

但是有时客户端需要通过向B请求来强行让A刷新一些设备信息(除了要求A刷新之外客户端不参与)。刷新单个节点的信息需要几秒钟,因此信息可能不应该在请求它的同一请求中返回。目前我们将此建模为您使用 POST /jobs 创建“刷新信息”类型的作业。与一些数据。但这感觉非常过度设计,我们更愿意想要像 POST /equipment/<id>/refresh 这样的东西。但这感觉违背了“REST 方式”?

除了上面提到的工作之外,还有其他解决方案,但仍然遵循“REST 方式”吗?

最佳答案

我会使用 GET /equipment/<id>?since=<timestamp> , 其中since参数是可选的。从语义上讲,这意味着:

  • 获取给定 id 的设备从上次刷新时开始(当未给出 timestamp 时),或
  • 获取给定 id 的设备刷新时间不早于给定的 timestamp

每个equipment在你的系统中会有一个 last_refreshed时间戳。 GETsince=<timestamp>如果last_refreshed < since,参数将刷新设备然后返回 equipment .

您服务的用户然后可以说 GET /equipment/123?since=<15 minutes ago>并确保他们获得的信息始终不超过 15 分钟。 GET /equipment/123?since=<now>意思是“强制刷新”。

关于api - REST 中的建模操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15815546/

相关文章:

javascript - 如何删除 JSON 返回 C# 中的列名称

api - API 服务应该发送用户激活电子邮件还是客户端应用程序?

apache - 基于子域名的 http 到 https 重定向

git:如果http请求失败则重试

rest - 如何创建有意义的 REST 响应消息?

java - 保护网络 API 访问

android - 如何使用 volley 库访问 android 中受密码保护的 URL

performance - 通过主机名传播静态文件

python - 如何通过关系字段的属性过滤 Django 模型?

java - 带有 javax.ws.rs.core.Application 的 MultiPartFeature