对接后端接口被挑战能力不行(吐槽贴,不会因为这个问题去挑战什么)

2024-04-29 09:58:45 +08:00
svip0dd  svip0dd
原因:App 开发的时候,首页有 4 个相同的模块,在了解到数据是同一个服务提供的,所以希望后端在提供接口的时候能够一次将这个这四个模块的数据整体返回给我。

结论:服务端的大佬说为了保证接口的原子性,不要做太多业务上的事,他们会开发一个通用的接口,有几个模块让我调用几次。其次服务端考虑到后面可能其他的服务也会调用,所以希望能尽可能通用。

以上结论在前后端对接时他们时常用这个说法对我进行 pua ,我觉得我已经无法接受了,请问各位大佬,这种情况如何反驳?为了保证他们接口的原子性,我大部分页面通常都要 2-5 个接口,甚至更多,比如之前获取图片,因为他们的图片是两张表,一张是图片 id ,一张是 id 对应的图片地址。我只能先获取 id ,再用 id 去请求接口。但服务的通用性在这个说法我在长期对接中发现纯属扯淡,几乎只有我在对接且因为接口调用的多了增加各种复杂场景,如果没有处理好也会影响用户体验。
23902 次点击
所在节点   程序员  程序员
216 条回复
bigfei
bigfei
2024-04-29 10:06:36 +08:00
自己建立个 BFF 层,扩大代码的 ownership ,防御性编程。
Gil86002618
Gil86002618
2024-04-29 10:07:18 +08:00
写个 BFF 层处理吧,其实服务端说的也没错,有些服务就是基础服务,跟具体的业务无关,需要考虑接口的通用性。
hging
hging
2024-04-29 10:08:31 +08:00
你想想如果明天产品跟你说 要再加一个数据 那你是让后端给你加接口方便还是用通用的自己接方便。
lambdaq
lambdaq
2024-04-29 10:08:36 +08:00
接口原子性最后的进化就是客户端直连 sql 。
woodfizky
woodfizky
2024-04-29 10:08:43 +08:00
设计上应该保持各个方法/接口的原子性,但是给到前端的接口可以根据业务具体情况让后端自己整合一下。
当然也可以不整合。

但是图片分两张表/两个接口有点奇怪,两张表不是可以联表查出来一起给到前端嘛,反正都是 url ,又不会有多大。

我只能说你举的例子不够明确具体,最好给个例子。
unco020511
unco020511
2024-04-29 10:10:17 +08:00
可以自己加个中间层处理下,对于你的业务还是调一个接口
vacuitym
vacuitym
2024-04-29 10:11:54 +08:00
其实分开比较好,你想一下四个模块有一个出问题了,你希望是只有三个模块数据正常展示还是说四个数据全部无法展示
FEontheway
FEontheway
2024-04-29 10:12:30 +08:00
让后端再另外提供一个聚合接口调这个通用服务不就行了。而且多个接口同时调用,各个模块展示顺序也不好控制,不会影响用户体验吗
lzgshsj
lzgshsj
2024-04-29 10:12:54 +08:00
为什么要反驳?用着不爽就自己弄 BFF 。另外这种事情不应该让你们的 leader 定调吗
JoeDH
JoeDH
2024-04-29 10:13:15 +08:00
我前司的领导在搞部门的业务中台需求评审时说,想把中台服务搞成只有一个接口,要兼顾所有数据,还要兼顾对外开放的格式
NessajCN
NessajCN
2024-04-29 10:13:58 +08:00
没太懂,你是希望后端专门为你写个接口,把其他接口已经提供的功能和数据整合到这个接口给你,方便你只用请求一次就能获取全部数据?
lithiumii
lithiumii
2024-04-29 10:15:34 +08:00
@eastjoehan 我遇到过要求能直接写 SQL 查的,这不是完美符合
helone
2024-04-29 10:15:39 +08:00
你可能刚从业没几年吧,之前我对接的移动端反而觉得后端一个大而全的接口不好,一旦业务或者页面变更,整个接口都要做大变更和重做一个页面没区别,如果分拆开来反而能复用部分之前的代码包括容错的逻辑
asLw0P981N0M0TCC
2024-04-29 10:17:34 +08:00
@NessajCN 是的吧
fnd
2024-04-29 10:17:35 +08:00
你们的后端太懒了。就你说的这些情况,需要有一个专门的业务后台来做这些接口的整合,而不是客户端做这些事情。
vincent7245
2024-04-29 10:18:07 +08:00
这是最基础的架构啊,基础服务 -> 业务代理层 -> 客户端/前端,按照你的描述,是不是你们后端没有做代理层,你直接访问的基础服务的接口?那就自己在客户端做个代理层呗
brader
2024-04-29 10:18:13 +08:00
>大部分页面通常都要 2-5 个接口。 首先这个现象是正常的,你随便去看哪家大厂的产品,只会调用的更多。

然后从你描述的情况,总结为后端出接口可以有两种方式:1 、按页面来出接口。2 、按功能模块来出接口。
这两种其实都行,都可以实现需求。我个人觉得后端怎么出你怎么用(不合理的接口除外),没有必要非站你角度去强迫对方按哪种方式出接口,只会增加无畏的争吵
zephyru
2024-04-29 10:18:50 +08:00
这种情况感觉就是,SaaS 中台或者叫业务层与底层服务的区分,后端不想有 UI 的业务代码入侵后端,从设计上考虑其实无可厚非,无非就是 UI 的业务逻辑在哪一层聚合的问题,BFF 层可以后端维护,也可以前端维护,可以写在服务端也可以写在客户端,无关对错只是一个策略问题,你要是有能力可以推进后端针对业务抽象一层出来也不是不行,不好推就自己抽象吧
ilovegaojianfore
2024-04-29 10:18:54 +08:00
我作为十年老 iOS ,也觉得分开给比较好,我不喜欢一个接口包罗万象。
liumao
2024-04-29 10:19:05 +08:00
这图片表为啥要分开存,啥呆逼设计

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

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

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

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

© 2021 V2EX