我按照以下原则实现了 REST API
例如/car/5 会给我 model:blabla , user_id: 1 然后如果您需要所有者,您将获得/user/1 来获取用户数据..
这样,在 DB 中就可以避免 JOINS 和其他东西。所有东西都在它们自己之间链接,并且在其余客户端部分互连数据 - 使事情变得简单,易于缓存/删除缓存、缩放等。
但是当你需要排序时会发生什么?
想象一下,我们在前端有一些 View 来显示以下数据:
汽车型号,用户名等...例如,您想按用户名排序。
您不能真正告诉/car/5 按用户名排序,因为它只知道用户 ID...
我看到的一个选项是从用户/user/list?sortby=username 排序,然后互连这些返回的 id 中的哪些实际上是指汽车。但这意味着我们需要获得所有用户..并且只使用那些看似致命的性能瓶颈的一小部分。
感谢您的任何指点
最佳答案
我认为您正试图避免出于所有错误的原因加入,因为采用这种方法,您将不得不处理更多的请求。
如果您取而代之的是带回您要显示的所有信息(即连接数据库端),那么客户端将不得不进行更少的查询,并且您可以进行排序而不必(懒惰)加载所有 child 对象。
另一种选择是将子对象作为子 XML 元素带回(以类似于 OpenStreetMap 的 RESTful 接口(interface)的工作方式)。您仍然有来自客户端的一次点击,您应该能够优化查询以最小化数据库上的负载。
关于architecture - RESTful API 排序困境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3510418/