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

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

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

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

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

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

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

16550 次点击
所在节点    程序员
143 条回复
Chingim
2019-04-19 01:15:17 +08:00
@AngryMagikarp 所以先出接口文档,前端才能够从自身角度提意见,达成一致之后把坑都排除。
如果后端一直闭门造车,到时不能满足产品需要,变动起来岂不是更麻烦。

接口文档是前端参与接口建设的重要契机,如果开发完才提供,那就不是讨论,而只是通知了
Sparetire
2019-04-19 01:26:17 +08:00
以前公司都是前后端产品设计需求过完,后端花个一天设计接口,前后端再一起过一遍接口,定好接口文档,然后并行开发,接口偶尔有变动,但基本上变动不大,并且变动后及时更新接口文档通知对方
就这,我当时还觉得协作不顺畅。。看完楼上我想是我身在福中不知福
frandy
2019-04-19 01:34:37 +08:00
前端:原型图扫一遍 -> 画页面
后端: 原型图扫一遍 -> 抽取出给前端返回的数据和相关接口 -> 定义 VO->出 mock&实现具体逻辑
上面两者并发执行,之后联调,查缺补漏。
frandy
2019-04-19 01:36:34 +08:00
上面有提到出接口文档,emmm,有了 swagger,还要什么文档,代码即文档,具体不清楚的字段具体沟通。
dajj
2019-04-19 01:39:38 +08:00
按照经验, 首先技术方案确定,难点解决之后才能出第一版接口文档,
然后后期开发过程中,肯定要改动接口的。
那种认为需求定了,接口就定了,简直无知。 需求难道还规定了具体字段名?
举个例子, 页面中有个字段, 一开始想到用 英文 1, 后面发现其他人也用到,然后又改成 英文 2, 这是多么常见的现象。
如果前端不肯跟着变的话,我是不乐意先出文档的。

我觉得正常来说
开始开发前,可以先对前端页面进行讨论, 大概页面给几个接口,接口包含哪些数据。
后端做好开发设计, 解决难点和创建好数据库后, 可以给出大致的接口名和请求参数
后端初步开发完成后, 这时候可以给出具体的响应格式
最后联调阶段,再稍微调整接口
scnace
2019-04-19 01:47:30 +08:00
后端真是惨 明明是产品经理的锅 要被前端吐槽接口怎么老是改 /接口怎么还没给 还要被 DBA 怼这个人怎么老让我帮改表结构 被怼到可能还要被项目组 leader 说 block 项目进度…(互联网寒冬,请体谅下每一个还奋斗在一线的后端码畜 🌚
akira
2019-04-19 02:59:51 +08:00
1000 多人的中型公司 ,不会就你们 2 个研发吧,这个后端是典型的个人开发作风啊
fakeshadow
2019-04-19 05:49:45 +08:00
请问我这样前后自己来还不停改接口的,是不是逗逼。
ackfin01
2019-04-19 08:01:32 +08:00
怎么说呢,简单接口可以约定好定义,有些复杂的怎么给啊。所以一般是一部分给,让前端先忙起来,然后增量式开发完一个接口测的没问题给一个接口定义,这样增加效率,减少问题。
johnhsm2333
2019-04-19 08:04:51 +08:00
小外包公司提过无数次,但是后端接口写好了也不会写接口文档。每次开发都要被后端拖一拖进度。然后给骂。
hantsy
2019-04-19 08:36:26 +08:00
参考 CDC(Consumer Driven Contract) 开发, 首先一起协商,定义好前后端一致的 Contract,生成 stub。 前后自己各自做自己该做的事,自己实现,写测试去验证 contract, 前后端的工作可以说可以完全分开。

流行的 CDC 工具包括,pact.io 比较适合基于 REST/HTTP 的开发,语言支持丰富,另外 Spring Cloud Contract 比较适合 Spring 全家桶,支持更多协议,比如 AMQP,等。

后端开发过程中,部分成果可以部署到公司内部 staging 服务器(当然你应该在用 CI ),应该很容易提供 Swagger UI 的在线工具来查询 APIs。文档是什么鬼?
luozic
2019-04-19 08:42:42 +08:00
码农,而不是设计或者软件工程师就是这么干的
passerbytiny
2019-04-19 08:43:00 +08:00
请问,你们的项目经理 /开发主管 /系统工程师呢?没有这些,1000 多人跟 5 个人没啥区别。
justfindu
2019-04-19 08:44:54 +08:00
我都是先给接口文档. 整理接口文档就是整理自己思路. 然后前端模拟.
Antihank
2019-04-19 08:50:15 +08:00
请问阁下以前就职的小公司是哪家方便说一下吗,我准备一下面试材料。。。
1000 人的公司确实不应该了,开发团队规模是不是跟得上另说,小公司产品改来改去的哪有文档这么奢侈的
Cbdy
2019-04-19 08:54:26 +08:00
我是一个“前后端分离”的反对者,前后端最好由一个人开发,效率高
yxcoder
2019-04-19 08:55:20 +08:00
表示一直做有接口适配,随他怎么改接口
lihongjie0209
2019-04-19 08:56:07 +08:00
@reus 一个需求可以有 N 种实现,具体选哪一种是由开发人员,开发进度共同决定的,并不是说需求定好了, 代码基本也确定了
bojackhorseman
2019-04-19 08:57:55 +08:00
我都是先写好页面,然后再和后端对接口。如果页面画完,接口还没出,就可以光明正大地摸鱼了(逃)
reus
2019-04-19 09:00:38 +08:00
@dajj 需求确定了,后端就可以根据需求写接口,接口就是传什么参数,返回什么,字段名是后端决定的。接口写好了,后面不是十分需要的话,是不会改字段名的,因为前端可能已经把字段名写入代码里了,你改名字,就是给前端添不必要的麻烦。其他人用了不同的字段名,就是因为你不肯先出文档,所以你才会认为“常见”。不好意思,先写文档的,根本就不会碰到这种破事。
另外,前后端分离的架构,接口应该是各种对象的 CRUD,加上一些特殊用途的,不是根据页面来的,根据页面那就是前后端耦合了。所以写文档,就是对业务本身的建模,主要是定义对象的字段等等,相当于后端的初步开发了,甚至可以根据字段定义自动生成文档。如果你的接口是按照页面来分,那页面需求变了你的接口也要跟着变,这就不是前后端分离的架构了,开发效率自然就低了,没法前后端并行开发的。

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

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

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

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

© 2021 V2EX