RESTful资源设计与操作实践
1. 资源连接性的重要性
在某些情况下,客户端理论上可以根据规则生成URI,毕竟服务器也是基于规则生成它们的。然而,这些规则涉及到对经纬度的理解、当前缩放级别下地图的比例以及地球的大小和形状等复杂知识。对于客户端程序员来说,通过跟随链接来导航地图显然比计算图块的坐标更加容易。这表明,当资源之间的关系变得过于复杂,无法用简单规则表达时,资源的连接性就变得至关重要。
以地图服务为例,谷歌地图的基于图块的导航系统就是一个很好的证明。谷歌地图使用任意的X和Y坐标来定位图块,而不是经纬度。向北查找图块通常只需将Y值减1,图块之间的关系变得简单许多。这启示我们,如果经纬度计算导致必须在每个地图表示中附带导航链接,那么或许应该重新考虑策略,提供更简单的URI,以便客户端更轻松地生成它们。
连接性的另一个重要价值在于,它使客户端能够处理随时间变化的关系。链接不仅隐藏了为给定资源构建URI的规则,还体现了资源之间的关联规则。下面通过一个例子来说明这一点:
假设地图服务获取了新的地图数据,这些数据比旧数据更精确,但比例尺略有不同。在缩放级别8下,客户端看到的地图比以前略小。例如,一个256像素见方的图块现在描绘的区域是0.75平方英里,而不是0.875平方英里。
乍一看,这似乎没有影响。因为经纬度没有改变,旧地图上的每个点在新地图上的位置也相同。但谷歌地图风格的图块URI会因此失效,因为它们使用X和Y坐标而非经纬度。地图数据更新后,需要重新计算所有图块图像,许多点会突然转移到不同的图块,获得不同的X和Y坐标。而基于经纬度的URI仍然有效,地图上的每个点的URI保持不变。
然而,查找相邻图块的规则发生了变化。
超级会员免费看
订阅专栏 解锁全文
556

被折叠的 条评论
为什么被折叠?



