大家的项目前后端接口是领域接口还是聚合接口?

2020-07-31 11:43:07 +08:00
 xylophone21

大家一起探讨一下,顺便做个小调查

  1. 领域接口,即接口按领域、业务模块划分,用户、订单、商品等。前端需要多次访问,聚合,逻辑。
  2. 聚合接口,即后端根据页面把这些模块按一定逻辑聚合到一起,前端少量几次请求即可

举例: 通过商品信息获取评论信息,通过评论信息中的用户 id 获取用户信息

6385 次点击
所在节点    程序员
32 条回复
woodensail
2020-07-31 16:22:58 +08:00
看场景,我这边前端核心业务是有自己的专属后端开发进行接口封装的。

很简单的一个情况,前端首屏展示就涉及几十个接口,需要根据数据内容去有选择的查询其中一部分。而且各接口互相依赖,完整的一遍走下来需要三四个来回。所以前端直接请求在性能上是不可接受的。这时候就需要后端来做接口菊科了。

相反有些列表页基本上一个接口搞定首屏的,就不需要专门的接口聚合了,直接请求业务接口就行。
wc951
2020-07-31 18:00:47 +08:00
显然应该是领域接口,聚合应该交给中间件来做
powerfj
2020-07-31 18:04:20 +08:00
领域接口 + 聚合接口都存在的方式
聚合可以用 graphql 来解决?
wangritian
2020-07-31 18:09:11 +08:00
@xylophone21 我更倾向于在 APP 聚合,让后端接口层更原子化,尤其是产品快速迭代时期,减小前后俩部门的沟通成本和联调复杂度。UI 变化时,前端仅需改变组装方式,只有业务逻辑变动时需要后端针对某个模块做修改。两个数据有交叉的页面,也只用维护一个接口。不太了解 APP,是不是原子接口也更容易封装组件。如果某个模块发生异常,其他数据可以正常显示。当然讨论前提必须是 h2,1.1 要么阻塞排队要么创建新连接,肯定无法接受
itbeihe
2020-07-31 18:10:23 +08:00
BFF ( Backends For Frontends )架构了解下,后端现在是不想写接口聚合服务的,多数成了前端用 node 搞这一层。
xylophone21
2020-07-31 20:18:54 +08:00
@itbeihe 跟聚合接口有点类似,有什么好的框架吗?
panlatent
2020-07-31 20:32:18 +08:00
聚合可以使用 GraphQL 来做更轻松点,此外后端应该还有一层应用层,其中可以包含一个数据转换层,当然最好别强为聚合而聚合,合理的拆分和搭配可能会更好一些。
redford42
2020-07-31 23:17:42 +08:00
领域接口
realpg
2020-08-01 07:14:35 +08:00
@xylophone21
这个场景下,这个端归谁管视为啥端。

如果是后端团队不影响既有后端另开了一个聚合层,跟后端配合紧密,算后端

前端为了方便另开个层聚合后端接口,不能影响后端,也不能与后端高度配合本团队调试,视为前端
changwei
2020-08-01 19:03:49 +08:00
建议对外的系统用聚合接口,防止被黑客恶意请求部分接口,导致出现数据不一致问题。(例如电商购买商品后要通知财务系统扣款或者物流系统扣库存,但是可能黑客会只请求其中一个领域接口,其他不请求,导致数据不一致。)
luozic
2020-08-01 21:24:17 +08:00
内部领域接口,中间搞个胶水层包装成聚合接口
kgloveyou
2021-05-26 00:11:52 +08:00
@ybonfire 那么问题来了,聚合层后端做,还是前端做?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/694586

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX