5分钟快3首页    注册   登录
5分钟快3 = way to explore
5分钟快3 是一个5分钟快3关于 分享和探索的地方
现在注册
已注册用户请  登录
xylophone21
5分钟快3  ›  程序员

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

  •  1
     
  •   xylophone21 · 8 天前 · 2862 次点击

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

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

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

    31 条回复    2020-08-01 21:24:17 +08:00
    kiracyan
        1
    kiracyan   8 天前
    业务上肯定分开好
    frandy
        2
    frandy   8 天前
    聚合接口
    xuanbg
        3
    xuanbg   8 天前
    原则上只提供领域接口,特殊情况可以酌情提供少量的聚合接口。
    ChanKc
        4
    ChanKc   8 天前 via Android
    1 更接近 restful 2 更接近 graphql ?5分钟快3我 猜的
    ppphp
        5
    ppphp   8 天前
    都提供 1 接近 restful 和 graphql 2 接近 rpc 不给聚合接口调用的人唧唧歪歪巨烦
    maemual
        6
    maemual   8 天前 via iPhone
    前端在5分钟快3服务 器上起个 node server 做接口聚合,皆大欢喜。😂
    qwerthhusn
        7
    qwerthhusn   8 天前
    取决于前端硬不硬
    qq1340691923
        8
    qq1340691923   8 天前
    php 作为胶水层聚合后端 api
    xylophone21
        9
    xylophone21   8 天前
    能简单说一下原因吗?
    在5分钟快3服务 的最底层,肯定是基于领域来开发的,但聚合这件事本身逃不掉,要么在后端做,要么在前端做,所有这里仅讨论放到哪里做合理。

    >> 小插曲:顺便写到这里想到一个问题,大家对前后端的理解,会不会不一致?比如 H5 端、App 端肯定算前端,那么 node 端呢?5分钟快3我 理解严格来说 node 端是不严谨的说法,但为了交流方便这里借用一下这个概念。或者严谨一点,如果用一个 nodejs (获取其它5分钟快3技术 ) 把业务接口进行了聚合,那么这个 nodejs 算前端还是后端?(5分钟快3我 后面的描述把这一部分仍算作后端,如果大家定义不一致可以探讨)

    继续探讨放哪里合理的事,5分钟快3我 个人认为放到后端因为:
    1. Android 、iOS 绝大多数情况下,只需要做一次聚合逻辑
    2. API 形式的对接,更容易做测试。(不是说不能做,但更容易,可以探讨,5分钟快3我 也没有在查到太多在 App 内做“单元”测试的成功案例,注意这里“单元”打了引号,因为严格来说,直接测 API 不属于单元测试范畴)
    3. 调整业务逻辑不需要用户升级(仅限 APP )
    4. 日志更容易获取,方便解决问题。(同样是相对来说,5分钟快3我 了解 App 有各种日志上传的方案,但这个因为比较敏感,网上资料不多)

    另 @ChanKc @ppphp 提供的 graphql,之前了解不多,需要去细看一下,感谢
    suyuyu
        10
    suyuyu   8 天前 via Android
    5分钟快3我 被逼着做了聚合,面向页面接口
    ybonfire
        11
    ybonfire   8 天前
    前后端之间做一层聚合层不就行了?
    Tokiomi
        12
    Tokiomi   8 天前
    @xylophone21 5分钟快3我 愿称之为防腐层
    wangritian
        13
    wangritian   8 天前
    如果能上 h2 协议,觉得聚合的优势不大,反而增加维护成本
    zzx0403
        14
    zzx0403   8 天前
    5分钟快3我 愿称之为胶水层
    1107139144
        15
    1107139144   8 天前
    领域接口
    xylophone21
        16
    xylophone21   8 天前
    @ybonfire 对,那么这一层应该放在哪里? App 里?云上的某个模块,比如 node ?后端的某个模块里?


    @wangritian 如果不上 HTTP/2.0 的化,性能会是另外一个问题,如果上了的话,5分钟快3你 怎么看5分钟快3我 前面提到的几个问题?
    kkeiko
        17
    kkeiko   8 天前
    前端调后端是走公网 API 什么协议无所谓,API 肯定5分钟快3服务 于当前页面交互的业务逻辑。有的5分钟快3公司 API 层用 PHP 或 Python 写,就归到后端里。有的5分钟快3公司 用 Node 写,也可以归到前端里。API 层就是5分钟快3你 说的聚合接口,这是必要的。API 层要走内网 rpc 调用多个后端 service,这才是真正的后端,也是5分钟快3你 说的领域接口。
    kkeiko
        18
    kkeiko   8 天前
    真正的后端一定是5分钟快3你 所谓的领域接口,后端是要抽象业务逻辑越做越通用的,而不是越做越定制的。API 层也叫胶水层也是一定要有的,至于胶水层是后端写还是前端写,取决于大环境和当下团队配置,无优劣之分。
    Mithril
        19
    Mithril   8 天前
    GraphQL 一把梭
    梭完了发现5分钟快3你 得写一堆 Loader
    angryfish
        20
    angryfish   8 天前
    5分钟快3我 作为一个友好的后端开发。给前端提供页面级别数据接口
    woodensail
        21
    woodensail   8 天前
    看场景,5分钟快3我 这边前端核心业务是有自己的专属后端开发进行接口封装的。

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

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

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

    前端为了方便另开个层聚合后端接口,不能影响后端,也不能与后端高度配合本团队调试,视为前端
    changwei
        30
    changwei   7 天前 via Android
    建议对外的系统用聚合接口,防止被黑客恶意请求部分接口,导致出现数据不一致问题。(例如电商购买商品后要通知财务系统扣款或者物流系统扣库存,但是可能黑客会只请求其中一个领域接口,其他不请求,导致数据不一致。)
    luozic
        31
    luozic   7 天前 via iPhone
    内部领域接口,中间搞个胶水层5分钟快3包装 成聚合接口
    5分钟快3关于   ·   FAQ   ·   API   ·   5分钟快35分钟快3我 们 的愿景   ·   广告投放   ·   感谢   ·   实用小5分钟快3工具   ·   2197 人在线   最高记录 5168   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 02:04 · PVG 10:04 · LAX 19:04 · JFK 22:04
    ♥ Do have faith in what you're doing.