请问怎么样才能愉快的前后端进行对接

2021-12-09 09:43:01 +08:00
 xianyv

我现在跟前端对接的时候太痛苦了, 怎么才能让前端看到接口就知道这个接口用在哪里? 还有就是怎么才能让前端记住部分通用字典(这个可能有点过分)?

5583 次点击
所在节点    问与答
86 条回复
lqw3030
2021-12-09 11:16:40 +08:00
yapi,swagger 通过介质,规避语言沟通带来的负面情绪
xianyv
2021-12-09 11:20:08 +08:00
@DShen 全栈做不了,但是能全干
xianyv
2021-12-09 11:25:50 +08:00
@lqw3030 确实 主要是沟通带来的负面情绪太多了
nc4697
2021-12-09 11:26:53 +08:00
我们写接口甚至不用通知前端。进度表更新已完成他们就自己去 swagger 上面找了
joshuacavell
2021-12-09 11:27:40 +08:00
@gauzung 就你秀
RealJacob
2021-12-09 11:29:14 +08:00
我还觉得我对接的后端做事儿不靠谱呢,文档不更新,有 swagger 也不用,mockapi 也不用,什么时候都觉得着急忙慌,让他改一改,规范一点,就是排期不够用,这次先赶进度。最后急匆匆的丢给我一堆数据,真是干的费劲。。。一帮老油条混子,说难听点,真的该被优化了
c6h6benzene
2021-12-09 11:29:58 +08:00
@xianyv 你用了还能拦着你不成…最多发布的时候去掉呗。
c6h6benzene
2021-12-09 11:30:47 +08:00
上条说的是 Swagger ,引用好像出错了。
xianyv
2021-12-09 11:32:36 +08:00
@RealJacob 直接丢数据确实有点恶心,一般都是更新文档的,就算是忘记了,沟通后也还是要更新的
evil0harry
2021-12-09 11:34:13 +08:00
postman group
xianyv
2021-12-09 11:35:39 +08:00
@c6h6benzene 能拦着,之前我跟领导沟通过,明确的不让用,而且他还隔几天就看看代码,我要是引用进去,他能给我唠叨半天
xianyv
2021-12-09 11:36:37 +08:00
@nc4697 我们没有项目进度表,项目管理混乱
Heimerdinger
2021-12-09 12:01:01 +08:00
提升自己的实力,有时候痛苦的根源是你自己表达不清楚
guisheng
2021-12-09 12:03:43 +08:00
总有一个人需要去叙述,要么你跟他说一次,要么画个图,要么他来问你这个地方调用哪个接口。
Remember
2021-12-09 12:04:49 +08:00
正儿八经的工程,文档比代码重要的,不存在把更新文档忘了这种事,应该是文档先出,代码后提交。
phub2020
2021-12-09 12:13:59 +08:00
我是前端,我只按后端给的文档干活。do one thing ,万一要是我不按文档干活,回头楼主会不会再怨我自己发挥过头呀。加个狗头,保命
daliusu
2021-12-09 12:39:58 +08:00
1.让前端看到接口就知道这个接口用在哪里;
2.让前端记住部分通用字典

这俩说能解决都能解决,说不能解决也不能解决,事实上这问题大头在后端和项目的工程化能力而不是前端
比如 [让前端看到接口就知道这个接口用在哪里] ,你觉得前提是不是得你给接口写的好?外加你们工程化做得好?接口文档清晰分类,同时你接口名称命名也够规范够清楚,这样前端按照分类自己找到对应模块,然后去模块看看名字就知道自己要哪个接口。我见过有一些接口是完全没分类的,就一串名字,这串名字还包含大量无意义的后端模块信息,根本区分不出来这是什么玩意。我给个实际例子,memberAddLog 这个是我前一阵子接口的一个系统的接口,你看名字猜猜这是啥,是不是加成员的日志信息?其实这是个成员列表接口,为啥叫这个,因为后端觉得成员都是人为添加的,添加日志就是成员列表,所以叫这个。而且文档没有任何 注释说这是个啥玩意,如果满屏幕都是这玩意你说怎么能接,问了我都怕记不住我还要自己写注释,不然隔天就忘了这是个什么。

[怎么才能让前端记住部分通用字典] 这个问题反倒好解决,我这里是这部分字典会在接口文档里面直接体现,我找了个实际的

// 前端接口文件
export enum APIStatus {
DEPLOYED = "已部署",
DEPLOYING = "部署中",
FAILED = "部署失败",
}

// 后端文档
{
apiName: string,
apiStatus: APIStatus
}

接口文档会直接标注 apiStatus 的类型是 APIStatus ,前端去直接引用 APIStatus 这个枚举就可以了,所以我反倒工作中没碰到过词典问题,但是这个前提也得工程化支持同时规范化操作,你如果就给写个 0 1 2 ,这就没辙了,不问上哪知道去,最坑的有时候用 01 ,有时候用 12 ,有时候字符串,有时候数字。

所以解决这俩问题我觉得基础在工程化这块要做得好,前端后端都得做得好,其次就是后端要约束自己的代码,再然后就是前端要有点灵性(这个其实很难定义,我见过不少代码写的还可以的人确实不太灵性,有些代码写的一般般但是基本看看就懂了),我现在基本做一个模块(俩星期工作量的)可能跟后端也就沟通个几十句的样子,剩下大部分都是报一些问题
qwei
2021-12-09 13:06:17 +08:00
1.让前端看到接口就知道这个接口用在哪里:
接口用在哪需要看你们项目怎么规划,是面向对象的还是面向流程的。
面向对象的,需要完善的文档,结果应该是,看到接口知道拿到的是什么,而不是看到接口知道用在哪,比如:
getUserInfo ,看接口应该知道是获取用户信息,那么是用在哪的不需要你考虑。
如果是面向流程的,需要实现双方做好约定,结果应该是,看到接口就知道是用在哪,比如:
getUserCenterInfo ,那么这个接口应该是用户中心页面的所有内容(如果你真的肯这么干的话);或者 getGoodsListForPage ,看起来应该是获取某一页的商品列表(如果你肯这么干的话)。
2.让前端记住部分通用字典
通用字典的关键在你们需要事前同步“通用”的含义,比如每个公司在定义接口返回状态的时候,code=0 是没问题,那么可以取 data 里的值,code!=0 ,那么 data 没有值,取 message 里的报错信息;而又有些公司,有 code 则是有问题,没有则是没问题。还有比如 end 是结束,那么开始有些会用 start ,有些会用 begin 。还有失败,有些会用 failed ,有些会用 error 。
你的通用字典,不一定是别人的通用字典。想让对方记住,就约定。
ColdBird
2021-12-09 13:15:57 +08:00
我工作几年得出的结论是后端不蠢,文档能出好,接口 bug 少点,就很轻松
kiritoxf
2021-12-09 13:40:04 +08:00
不让用 swagger 的话,可以本地搭个服务吧,跑在内网,让前端直接访问你电脑就行了。

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

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

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

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

© 2021 V2EX