请教后端大佬一个问题,没法设置可选值?

2019-02-28 09:38:00 +08:00
 sm0king

今天跟后端联调一个查询的接口。 搜索条件并不是必填,都是可选的,于是跟后端说,不选的筛选条件就不传了。刚开始也答应了。

联调的时候,接口一直报缺少查询条件,也没说缺少什么,于是就问后端怎么回事。 后端刚开始说,我 swagger 上测的没问题,肯定是你代码有问题。 然后就发现所有的条件都是必填,问后端怎么回事,他说,那你把所有未填的筛选条件都赋个 0 传过来呀,不传肯定报错了。

当时我就懵逼了,但无奈说不动,只能改,我把所有筛选条件加了个全部,值是 0,但是产品找过来说,不能有全部这个筛选条件,还把我哔哔了一顿,有种夹在载中间不好做人的感觉。

于是再次找后端商量怎么做,这次他直接说,后端做不了,”代码都写好了,你让我怎么改?“ 我说不是很懂你代码,或许加个默认值之类的呢? 过了一会儿,后端大佬说:”不行,阿里规范不允许给默认值。“(我们不是阿里,只是大家都比较推崇规范不是么)

我很懵逼,怎么就没法设置参数可选了呢,这个不是很常见的情况么。 因为这个事情昨天耽搁了一下午,心累。

4885 次点击
所在节点    职场话题
64 条回复
triptipstop
2019-02-28 10:16:26 +08:00
我倒是很希望 用上不上的参数 就别传给我了
可是 很多前端 非要传个空值给我 说懒得做判断?
是这回事儿吗?
yanqing07
2019-02-28 10:21:09 +08:00
不给默认值,然后要你全部给个 0,那和给默认值有什么区别。
这时候肯定叫上产品一起讨论啊,不要自己一个去的。
前后端都是为这个产品(不是指人)服务的,不符合需求肯定是要改的。大家在商量下才能做出产品,那有各做的各的。而且,做完不能改的情况一般是这个接口很多不同端在用,才可能没法改。但是,肯定有折衷方案,例如,在这接口基础上扩展一个
Malthael
2019-02-28 10:37:10 +08:00
后端就他一个吗?不要怂,怼死他
v2chou
2019-02-28 10:46:03 +08:00
后端这么叼? 怼死他,还代码都写好了,你让我怎么改,
metabot
2019-02-28 10:48:36 +08:00
换 GraphQL 皆大欢喜🙈
tongz
2019-02-28 10:52:32 +08:00
传什么参数怎么传这种问题一般是谁嗓门大谁说了算
Vegetable
2019-02-28 10:59:42 +08:00
叹为观止...
我决定去找一下他说的不能设置默认值这个规范的出处,并顺便找找有没有说怎么处理空值.
Cbdy
2019-02-28 11:01:53 +08:00
我有的时候看一些后端程序员的代码,会想:天呐,写这个接口的是羊驼吗?
Damon4V
2019-02-28 11:02:53 +08:00
后端自己学起来,这样就可以直接怼回去:“我来写,你滚蛋”;
karllynn
2019-02-28 11:08:43 +08:00
为啥不能设置默认值,什么见鬼的规范,文档写清楚不就完了=,=
af463419014
2019-02-28 11:27:08 +08:00
这个后端不是懒就是菜,欺负新人还没人品
Hieast
2019-02-28 11:33:13 +08:00
可选的参数应该后端实现默认值,嗯,我是后端。

不过我认为前端也应该实现一套,以应付产品。
zwh2698
2019-02-28 11:35:18 +08:00
这个问题是一个设计哲学问题,首先说为什么阿里不提供默认值,因为在无状态,可重入的时候,后端提供默认似乎就是成了有状态。其次 所以函数要设计功能是原子正交,如果参数带上变化可以获取相应的计算结果,那么一定会使用参数,而不会内部使用默认值。

针对这个问题,我其实不明白是后台不支持部分参数带有默认值,还是怎么的?如果是这样,那也至少要符合业务需要,所以代码原则都是为产品服务的,代价最少,效果最好,这个代价包含开发维护运维等。

另外我觉得你们就是一个沟通问题,你发这个贴,你们还是没有沟通,没有多少结果,重要的心平气和的喊上你的主管,你和他,以及他的主管,大家把这个事摊开说,约定清楚了,以后就不会扯皮。重要的是建立规则和优化规则。
mejee
2019-02-28 12:14:46 +08:00
后端一般都可以很简单的实现默认值。问题就在于你们怎么约定的,按约定来
Enix
2019-02-28 12:15:13 +08:00
缺个能定规范的领导
rochek
2019-02-28 12:58:41 +08:00
后端开发一枚

接口没有文档么。
一般来说,前端在调接口开发的流程,一般来说。
首先后端写代码,单元测试通过,接口文档写好,给前端,前端去写调用。

照着接口文档写,后端没正确返回是后端的问题,你自己没看明白是前端的问题。
职责很明确的。
wolfie
2019-02-28 13:17:59 +08:00
『他说,那你把所有未填的筛选条件都赋个 0 传过来呀』还有这么干的?
mxy940127
2019-02-28 13:24:10 +08:00
不用想了 不是后端水平太菜 就是太懒
v2epS
2019-02-28 13:48:57 +08:00
后端问题~参数可以缺省很正常需求
wysnylc
2019-02-28 14:09:11 +08:00
后端彩笔

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

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

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

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

© 2021 V2EX