我有REST API实现遵循以下原则:休息只返回基本文档,并在那些文档中引用如何获取其他东西等
例如,/ car/5会给我模型:blabla,user_id:1然后如果你需要拥有者你将获得/ user/1来获取用户数据..
这样就可以避免在DB中使用JOINS和东西.所有东西都在它们之间连接,并且在休息客户端部分上相互连接的数据 - 保持简单易于缓存/删除缓存,扩展等.
但是当你需要排序时会发生什么?
想象一下,我们在前端有一些视图来显示以下数据:汽车模型,用户名等......你想按用户名排序,例如.
您无法真正告诉/ car/5按用户名排序,因为它只知道用户ID ...
我看到的一个选项是从用户/用户/列表中排序?sortby = username,然后互连其中哪些返回的ID实际上是指汽车.但这意味着我们需要获得所有用户......并且只使用那些看似杀手性能瓶颈的部分.
谢谢你的任何指示
我认为你试图避免加入所有错误的原因,因为采用这种方法,你将不得不服务更多的请求.
如果您改回了所有显示的信息(即加入数据库端),那么客户端将不得不减少查询次数,您可以进行排序而无需(懒惰)加载所有子项对象.
另一种选择是将子对象作为子XML元素返回(与OpenStreetMap的RESTful接口的工作方式类似).您仍然可以从客户端获得一次命中,并且您应该能够优化查询以最小化数据库上的负载.