停止战斗!前端与后端的爱恨情仇深度解析

发表时间: 2022-06-16 17:01

今天天气晴朗,大雄有个朋友火气正旺,疯狂给我吐槽公司后端,为了方便阅读,前端朋友称作前端,后端朋友称作后端,事情大概是这样:

后端说要联调接口,前端说你的数据尽量按我的要求来,后端不服气,说你这个没用。前端就讲道理呀,传统的前后端分离返回的格式要尽量规范,这样才好处理。

后端同意了,很快啊,啪的一下,前端这边请求刚发出去,立马就返回了。

谁知大意了没有闪,一个Code码,一个字符串,一个数组,全部接受转换成了模型,再正常处理业务逻辑和页面展示,前端笑了笑提交测试,很快啊,一上正式环境程序就崩溃了啊。

原是字符串没有判空,前端说后端你不讲码德,后端说对不起,是我不懂规矩,我是乱打的代码。好家伙,一个训练有素的练家子会乱打?这明明是来糊弄咱老前端,不讲码德!

朋友只能劝他耗子尾汁,好好反思,以后不要再耍这种小聪明,毕竟程序员要以和为贵,搞窝里斗是万万不可的,求求不要再把空值异常抛给前端了!

其实在开发过程中,前后端还会存在其他分歧,比如前端希望根据 UI 来划分接口,这样用户体验好,前端实现也容易。后端则更希望根据业务模块划分接口,这样有利于服务下沉和解耦。

于是前后端之间可能会出现如下对话:

--后端: 你多调几个接口不就行了么~
--前端: 多好几个 HTTP 请求呢。包成一个接口有这么难么?

前端和后端各有各的道理,还都不肯退让,互相扯皮,互相看不顺眼,所以结合大雄的见解,今天来分析分析为什么前后端总是争吵不断?


原因一:没有文档或文档不全

例如新的前端人员到了一个新的公司,使用接口时,问这个这个不知道,问那个那个不知道,要文档没文档,这绝对是前端人员最抓狂的事,心里肯定是一千只草泥马奔腾而过。

那为什么需要文档?

首先文档是当前开发者甚至后面的接盘侠(后面开发者)能够清晰往下做的第一步指引。

而且,从办公效率方向考虑,即便是简单的东西,但如果不写文档,以后口口相传消耗的工作量会比写文档更多。

再其次就是最简单的理由,好记性不如烂笔头,一段时间后,可能连开发者都忘记接口的用途,可不就尴尬了。

总之,文档是极其关键的,无论是在线文档还是本地文档。虽然写文档是麻烦的事,但对后端人员来说,是利人利己。

但在工作中时常也会出现这种状况,虽有文档,但徒有其表,文档里对接口的描述不全,可能缺每个参数详尽描述(取值范围、类型)、请求方式(GET、POST、PUT、DELETE)、返回数据的所有状态等等,这里面可能最缺就是返回数据的状态!

既然写了文档,就把文档写好,写明朗。


原因二:接口参数没校验,问题不断

这个前端人员倒不是很关注,因为本身调接口之前一般都会先做校验,后端做参数校验只是双重保证。不过还是提醒后端人员,做好参数校验是第一步,不要偷懒了。

但有时也不免出现以下情况:

--前端:我吊你,怎么你分享的接口这么多错误?

--后端:我吊你,你用之前不会测一测接口正不正常?

--前端:我为什么要测?你开发的接口,你自己不测好?

--后端:我怎么知道你要用什么样的数据!你要是稍微测一下接口,能有这么多事?

……

虽然前端开发人员调接口时候,可能会存在各自各样的问题,这是很正常的,有问题可以理解,程序哪会没有bug,但希望不要太离谱。


原因三:没保证接口原子性

一个原子事务要么完整执行,要么干脆不执行。这意味着,工作单元中的每项任务都必须正确执行。

如果有任一任务执行失败,则整个工作单元或事务就会被终止。即此前对数据所做的任何修改都将被撤销;如果所有任务都被成功执行,事务就会被提交,即对数据所作的修改将会是永久性的。

所以接口的原子性是很重要的,有时一个接口可能会干几件事,但不一定都能正常完成,这就导致可能存在原子性问题,接口不能准确被调用

最后给现在的或者未来的前后端大师提一嘴。

要知道,前后端是互联网公司关系最紧密的两个岗位,二者相互配合好,才能给使用者更好的体验,所以还是希望双方都能多多体谅,换位思考。

在问题出现之前就尽量规避,在出现问题时,先检查自身,妥善处理。大家都是搬砖人,打工人何苦为难打工人呢

>END<