REST获取计算的资源视图

时间:2017-01-25 20:53:34

标签: rest get

我对从服务器请求计算实体时使用的正确约定感兴趣。即 - 涉及特定实体,但不返回其数据。而是返回基于实体的计算。

以一个存储多个时钟的站点为例,每个时钟具有不同的偏移/时区值。该网站的目的是展示模拟时钟的图像,双手指向适当的方向。

使用良好的惯例我希望能够做到这一点:

POST /clocks
{
    "offsetHours": 5
}

我会收到这个回复:

201 (Created)
{
    "id": "fe884d5e",
    "offsetHours": 5
}

现在我希望能够检索那个时钟对象:

GET /clocks/fe884d5e

回应:

200 (OK)
{
    "id": "fe884d5e",
    "offsetHours": 5
}

到目前为止,这一切都很好。但是我希望有两个其他端点可以访问。第一个将返回为时钟偏移计算的当前时间。第二个将返回显示基于时钟当前时间的模拟时钟的图像数据。

我的问题是:约定规定对这些数据项的GET请求应该是什么样的?或者在处理实体的计算视图时会不会松散?

1 个答案:

答案 0 :(得分:0)

  

但是我希望有两个其他端点可以访问。第一个将返回为时钟偏移量计算的当前时间。

这样的东西
GET /clocks/fe884d53/localTime
  

第二个将返回显示基于时钟当前时间的模拟时钟的图像数据。

这样的东西
GET /clocks/fe884d5e/localTime/analogClock.jpg

GET /clocks/fe884d5e/analogClock.jpg

这里的关键思想是这些信息资源,其方式与时钟本身的描述信息资源完全相同。

从消费者的角度来看,表示只是一个文件。不应该有任何方法来知道文档是新生成的,还是从文档存储中复制出来的,还是从Web缓存中拉出来的。

存在计算的事实只是隐藏在api背后的实现。

一旦你明白这些是共享实现细节的不同资源,剩下的工作就是自行车脱落(我们的路由很容易找到正确的实现吗?我们在路径中是否有分层数据?段,以及查询中的非层次化部分,使拼写看起来像“资源”,以符合我们的本地编码标准等。)