我正在开发一个带有PHP Rest API后端和Angular JS前端的应用程序。我试图解决的问题是使用来自多个模型的数据呈现页面的最佳实践。例如,如果您要显示“人员”资源的详细信息页面,则很容易获得与该人员相关的所有数据。但是,如果您还需要一个侧边栏,其中显示与此人相关的已上载文档的数量以及已创建的有关此人的备注数量,您将如何进行此操作?在更传统的应用程序中,您可以将所有相关数据一起收集到控制器中,然后将其注入要返回的视图中,但是不会违反RESTful方法来返回描述此人以及外围设备的数据文件和笔记等数据在同一个电话中计数?这些应该设置为多个api调用来从数据库中获取不同的数据对象吗?在考虑后一种选择时,为了构建单个视图,对api进行多少次单独调用被认为是可以接受的?
答案 0 :(得分:0)
冷酷的事实是,客户端需要有数据来显示它,无论它到达那里的方式是“RESTful”还是没有。我非常喜欢“RESTful”方法99.9999999%的时间,但也发现了几次它不太合适。在这种情况下,我认为它确实适合。
您所描述的内容听起来可以通过在人的实际模型中存储与该人有关的文档,注释,评论,小部件等的总数来完成,并根据需要进行更新。根据项目的规模,这可能是必要的。然后,单个请求将收集所有这些信息,并且不会感到尴尬,并且还会在客户端为您节省大量工作。
另一种方法是做一些$ watch或其他事件驱动的请求来获取每种资源类型的列表,如果你只是计算大部分时间,那么效率就会降低。
答案 1 :(得分:0)
我在构建我的第一个Angular应用程序时遇到了同样的问题。 RESTful方法不是“一刀切”的架构风格......通常需要一些偏差才能达到最终结果。使用Angular,您可以非常轻松地将这些操作分离到自己的控制器和服务提供商中,从而在这方面实现分离。
如果最终用户可以创建备注并相互独立地上传文档,那么我会将它们作为单独的资源保留。如果没有,那么一次通话就不会是坏事。