Restful资源的常见做法是在查询字符串中支持字段选择器。例如,如果资源包含字段A,B,C和D,但客户端仅对字段子集感兴趣(例如A和B),那么Url可能看起来像
... / resource / 1 /?fields = A,B //只选择A和B'
现在假设我们向资源添加了另一个属性。具有此属性的是它没有任何物理存储。这是一个计算值。另外假设这个计算非常昂贵。
现在显然,Rest并不关心这些事情,无论数据是来自文件还是数据库,还是花哨的算法。
但是这里面临两难选择:'''查询参数始终是可选的。就我而言,省略'字段'意味着"带来所有领域" (很像SQL中的' *'):
... / resource / 1 // A,B,C,D和E(xpensive)被选中'
我很肯定有许多现有客户正在使用天真的方法(不打扰指定明确的字段列表)。这意味着添加这个新的重属性将无意中创建性能中断(可能是非常严重的)。
应对这些情况的常用技巧是什么?
我考虑的替代方案:
答案 0 :(得分:1)
我最喜欢选项1。我会考虑将这些字段表示为引用对象,然后您可以通过单独调用重字段来获得HATEOAS样式。这类似于网页的行为 - 返回框架和一些内容,如果用户想要图像,视频等,则强制额外调用 -
看看这个:spring.io/ruderstanding/HATEOAS,这个:timelessrepo.com/haters-gonna-hateoas,这个:stackoverflow.com/questions/tagged/hateoas