后端开发完接口才给接口定义, 是常规操作吗?

2019-04-18 22:36:53 +08:00
 Chingim

最近加入了一个 1000 多人的中型公司, 在做项目的过程中, 后端不愿意先协商接口定义, 坚持等他开发完后才给接口文档, 理由是先给接口文档, 实现的过程中难免有变动, 改动起来很麻烦.

而作为前端, 我的理由是, 产品需求文档以及设计稿已经具备的情况下, 先约定接口定义, 前后端可以并行开发, 提高效率.

几番交涉之后还是没有达成一致, 现在是他开发一个接口, 给一个接口的文档.

之前就职的小公司是开发前给接口定义, 所有人评审接口之后再开发的. 我觉得效率很高, 定义好的接口, 开发过程中的改动也只是简单的增减, 不会有很大的变化.

是公司规模造成的开发流程差异吗? 请朋友们说说

16518 次点击
所在节点    程序员
143 条回复
bangq
2019-04-18 22:43:29 +08:00
easymock 很方便,还是要提前约定的
zjp
2019-04-18 22:44:13 +08:00
我是这几天第一次和前端对接的新人...
公司现在的做法和楼主之前就职的公司一样,但是我在做实现的时候经常发现要改接口,前端也提了好几处修改...产品支持后端开发完才给接口文档其实对前端不是更有利吗
kevinlm
2019-04-18 22:46:39 +08:00
我是安卓,接了一个外包,后端让我们列出所需接口,然后他们才去写。妈的我想弄死他们,这帮鸟人压根不想动脑子。
zhuzhibin
2019-04-18 22:48:06 +08:00
应该是 先出接口文档 然后前端 mock 并行开发吧 最后才联调 ?
Chingim
2019-04-18 22:51:44 +08:00
@zhuzhibin 不要应该,说说贵司情况。

@zjp 有利很难说。如果急着上线,开始开发的时间越晚,你的心智压力就越大。而且开发完才给接口定义的话,改起来更麻烦。
zhuzhibin
2019-04-18 22:58:07 +08:00
@Chingim 我各种场景都有经历过。。。 我是后端出身 之前公司是写完接口 补文档 同步给前端 后面也是因为效率问题 前端不可能干等后端接口 项目赶的时候 效率会差 所以才说了上面的那个方式 而如今 我自己一个人撸完页面 自己写接口 自己对接口 over 我要继续搬砖了
also24
2019-04-18 23:01:44 +08:00
先出全部详细文档的话,对后端来说工作量确实比较大。

工期确实紧张的话,我一般会建议先约定好大致的接口分类,和每个接口包含的大致内容(具体结构暂不约定),这样在前期就可以先做功能逻辑推演,及早发现问题;至于细节部分就留在开发过程中解决。
Chingim
2019-04-18 23:03:49 +08:00
@zhuzhibin 全干工程师要注意身体,这都 23 点了。休息吧
changdy
2019-04-18 23:07:43 +08:00
前后端都是个小菜鸟发表下自己看法:
前端属于所见即所得,不会涉及太多的状态流转。
而后端并不完全所见即所得,经常在开发过程中修改结构和实现方式。
一般来说越是逻辑复杂和初始阶段的项目,后端越难给定义。

不过前端也不算是等到后端有定义了才开始能写页面吧。刚开始的时候也可以写写样式 dom 结构等等..
zhuzhibin
2019-04-18 23:08:03 +08:00
@Chingim 开玩笑的啦 我还是挺注意休息的躺床听歌睡觉了💤
kidtest
2019-04-18 23:08:34 +08:00
理想情况肯定是先沟通,两边技术对好方案,商量好接口,同步开发。但实际上两边的排期可能会有出入,所以,尽量不影响双方开发进度就好
Chingim
2019-04-18 23:19:15 +08:00
@changdy 对于一些富前端应用, 其实并不是单纯地进行状态的展示, 也存在状态的变化.

没有接口文档也不是不能开发, 只是在开发过程中定义的各种数据结构可能和最终的接口相距甚远. 当接口出来之后要多加一层适配器.
Chingim
2019-04-18 23:20:41 +08:00
@kidtest 嗯, 可能是我的要求太过于理想了.
我决定在前端维护一套数据模型, 接口定义好之后再写适配器进行转化. 试试效果
hyyou2010
2019-04-18 23:34:13 +08:00
这里面很可能是一个怕背锅的问题,比如现在商定好了,但后端以后需要更改一下,他怕你把责任都推到他头上。只要大家都理解这个研发工作存在不确定性,告诉后端不用担心背这种锅就好了。
reus
2019-04-18 23:37:08 +08:00
需求确定了,接口就能写出来了,实现时改接口,说明需求没有搞清楚,或者根本就没有试过去理解需求,就开始做了,那当然要一边做一边改。

这种后端就是个坑货
ChefIsAwesome
2019-04-18 23:54:35 +08:00
其实就两种情况:
页面长什么样,接口就给什么样。一般这都是后端套了一层的结果。
接口跟页面不一致。前端自己拼出需要的数据。

前端开发的时候,只要把 getData 和 render 分开就行了。对 render 来讲,getData 只是一个函数,总是返回自己需要的数据。getData 里头你返回假数据也好,取真正的接口也好,取几个接口再拼出来结果都跟 render 没关系。这样就灵活多了。
AngryMagikarp
2019-04-19 00:01:15 +08:00
如果真的要先给出全部文档,而且是那种不更改的,那要花很多时间,而且也绝不是后端自己就能定的,还要参考前端的意见,不然到时候还是大概率要改。你就说说你们以前的迭代规模,接口评审花了多少时间,效果如何。

另外就算要推动这一流程,绝不是后端程序员的事,找你们的技术总监。

很多公司连产品需求都要改来改去,更别说是接口了。

再其次,既然需求已经定了。某种意义上前端自己也能设计出一套接口,你们完全可以按照自己的思路先做,正常情况下,你们自己假想的接口和实际后端提供的,应该只是结构不同(字段名等)。如果有很多出路,很可能是你们的产品理解就不同,赶快开个会统一一下。

反正我无论是做客户端还是服务端,都会积极推动接口规范。我觉得接口不是只是后端的工作,前端也要积极参与其中。
rizon
2019-04-19 00:06:44 +08:00
这种事情,事实话和你说:

如果工期紧张,肯定是先出 mock 接口的(有各种 mock 接口平台就是为此而生的)。前后端并行开发。但是开发中,接口绝对改来改去的,这个不全是个人能力问题,总之接口变动是必然发生的。

如果工期不紧张,那公司要是允许你们等到后台开发完再出接口,其实对你们有好处不用改来改去,踩的雷后端自己踩个差不多了没让前端一起跟着踩。但是等接口联调的时候,如果前端对接口不满意说是这种方式做不到,那后端就会很被动了。而且在这种时候后端接口还是会有可能发生变化的,原因很复杂,只不过不像先出 mock 接口那么频繁。
metrxqin
2019-04-19 00:08:04 +08:00
我是服务端。

新需求首先由我这边出接口文档初版供应用端开发参考,之后将服务端实现部署至测试服务器,联调过程中决定是否迭代接口文档。
Sanko
2019-04-19 00:25:52 +08:00
每次让前端给我写文档的后端小菜鸡路过~

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

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

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

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

© 2021 V2EX