咨询一下关于接口设计的问题

2018-03-14 14:10:36 +08:00
 Julio
本人客户端开发,最近在新版开发过程中很痛苦,请教各位大佬。
我们团队关于接口的开发流程是:后端数据层建表,写数据层接口、后端应用层写 API 接口、客户端开发。
遇到的问题是:
1.客户端与后端应用层沟通的成本太大了,一个接口要沟通确定很多次(这一点可以通过规范 API 文档来解决)
2.客户端必须要等到接口给出来了,才能继续开发,很影响整体的效率。

为什么这个版本才觉得很痛苦?
主要是因为这个版本团队走了几个人,原先人多一些,感觉不是特别明显。

我觉得可以并行开发,就是先设计好 API 接口,然后后端和客户端都按照这个来同步进行开发,不是很好嘛,但是咨询了我们的后端,说不行。原因是,应用层不能自己写字段名,需要数据层给,数据层要等到表建好之后,才能确定字段名。
在我的了解应用层提供业务相关 API,不需要完全按照数据层给的字段和结构来返回接口吧?

所以想来问问,大家都是怎么处理的?应用层 API 返回的字段名称必须要和数据库里面的字段名一样吗?给我一些参考,谢谢啦!
2717 次点击
所在节点    问与答
24 条回复
lllllllllllllll
2018-03-14 14:19:58 +08:00
客户端毫无疑问是想偷懒。
Julio
2018-03-14 14:25:34 +08:00
@lllllllllllllll 怎么看出来是想偷懒了啊?只是想提高一下效率而已啊。
chairuosen
2018-03-14 14:29:13 +08:00
@lllllllllllllll 是应用层才对
Icezers
2018-03-14 14:29:26 +08:00
#1 楼一句话打动了面试官

作为客户端兼后端开发,列一下个人认为合适的流程
1.客户端 UI 开发 | 后端 Model 设计
2.后端返回接口返回全部 Model 字段并开始编写逻辑 | 客户端进行业务对接和逻辑编写
3.客户端和后端一起梳理缺少的字段,过滤掉无用字段,添加各种校验
4.API 小幅度调整
结束开发

#API 全程使用 swagger 公示
Icezers
2018-03-14 14:32:23 +08:00
@Icezers 第一步时间一般不会很长,小问题在第三第四步进行小幅度调整 ,在第二步进行时,应用层和客户端就可以大部分介入开发了
Julio
2018-03-14 14:36:31 +08:00
@Icezers 感谢。再请问一下,API 接口返回的字段名 和 数据库字段名,两者一样比较好,还是不一样比较好啊?想知道其中的原因 :)
Icezers
2018-03-14 15:18:01 +08:00
@Julio 一样开发快找问题方便,不一样安全性好,防止 api 接口泄漏信息 这个自己把握下就好
Julio
2018-03-14 15:25:08 +08:00
@Icezers 好的,感谢!!!
b821025551b
2018-03-14 15:29:02 +08:00
前端先偷偷模拟一些数据自己用不就行了,反正就是一些数据的绑定什么的,先把剩下的流程撸下来,等 api 出来再慢慢改回去,死等得等到什么时候。
Julio
2018-03-14 15:41:52 +08:00
@b821025551b 也考虑过,肯定不能死等。只是如果字段名不确定的话,前端的 model 不好写,即使前端自己定义了,后面发现接口返回的字段或者结构和当初写的不一样,也很麻烦啊
Zzde
2018-03-14 15:46:15 +08:00
这时候就体现到 mock 的好处了
3a3Mp112
2018-03-14 15:50:04 +08:00
客户端需要什么字段可以由客户端主动提出。
Julio
2018-03-14 15:53:13 +08:00
@Zzde 是的,要是一开始就设计好接口,然后使用 mock,就流畅了
Julio
2018-03-14 15:55:10 +08:00
@3a3Mp112 赞同,关键是不让客户端提,原因是应用层不定义字段名,需要数据层来定义,数据层定义的话,就直接到数据库了
learnshare
2018-03-14 16:10:34 +08:00
1. 先写 API 文档;
2. 根据文档 mock 数据,后端没有也罢
Julio
2018-03-14 16:22:12 +08:00
@learnshare 赞同!
hyyou2010
2018-03-14 16:31:59 +08:00
一直以为是 API 接口先行
一直以为接口字段名跟数据库表里面的什么名无关
一直以为客户端和后端的交互是基于业务,这个根据需求来定,跟各自内部结构无关
ck65
2018-03-14 16:35:58 +08:00
前后端分离一种比较舒服的协作开发是文档先行,剩下的服务端、客户端等均平行位于文档之下。
Julio
2018-03-14 16:42:37 +08:00
@hyyou2010 不好意思,让你涨见识了
Julio
2018-03-14 16:45:06 +08:00
@ck65 是的,好的流程,效率高很多,写代码也舒服。

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

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

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

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

© 2021 V2EX