请教后端大佬一个问题,没法设置可选值? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
sm0king
V2EX    职场话题

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

  •  
  •   sm0king 2019-02-28 09:38:00 +08:00 5587 次点击
    这是一个创建于 2424 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

    64 条回复    2019-03-01 11:31:22 +08:00
    zhangqilin
        1
    zhangqilin  
       2019-02-28 09:43:32 +08:00
    后端刚开始说,我 swagger 上测的没问题,肯定是你代码有问题。
    这么说就没法合作了
    我是后端 我反正没说过这种话
    遇见问题我还会要个参数然后自己测一遍
    zhangqilin
        2
    zhangqilin  
       2019-02-28 09:44:37 +08:00
    “后端刚开始说,我 swagger 上测的没问题,肯定是你代码有问题。”(引用上文)
    这么说就没法合作了
    我是后端 我反正没说过这种话
    遇见问题我还会要个参数然后自己测一遍
    liunian1004
        3
    liunian1004  
       2019-02-28 09:45:18 +08:00 via iPhone
    典型的后端水平菜,代码扩展差,条件耦合在一起就说做不了。
    zhazi
        4
    zhazi  
       2019-02-28 09:45:42 +08:00 via Android
    阿里规范你让他去阿里写代码去,require false 按照 restful 风格写接口的话 这个搜索接口应该是 get 请求 本身就应该支持不传值搜索
    sm0king
        5
    sm0king  
    OP
       2019-02-28 09:46:11 +08:00
    @zhangqilin 在我们这里,经常听到,一般情况下联调出问题的时候都会。
    zdt3476
        6
    zdt3476  
       2019-02-28 09:47:42 +08:00
    不是偷懒就是菜。。。
    sm0king
        7
    sm0king  
    OP
       2019-02-28 09:49:02 +08:00
    @zhazi 对,就是个 get 请求,查询搜索。

    @liunian1004 不敢说大佬技术撇,只能期望他能修改,我在坚持让他修改。
    yylucifer
        8
    yylucifer  
       2019-02-28 09:50:19 +08:00
    应该是可以得
    serialize 和 deserialize 可以设置些选项之类的;
    还有可能就是 validation 直接设置的全必填。
    liunian1004
        9
    liunian1004  
       2019-02-28 09:53:28 +08:00 via iPhone
    口头说没有用,留下截图发给产品,后端自己说实现不了,你找他去。
    ob
        10
    ob  
       2019-02-28 09:55:11 +08:00 via Android
    目测后端 java
    ob
        11
    ob  
       2019-02-28 09:55:49 +08:00 via Android
    加上 require=false
    maemual
        12
    maemual  
       2019-02-28 09:55:53 +08:00
    后端菜,就是这么简单。
    learnshare
        13
    learnshare  
       2019-02-28 10:00:34 +08:00   2
    不是做不到,也不是不符合规范
    是懒,而且内心严重排斥一切非自我的东西
    Shynoob
        14
    Shynoob  
       2019-02-28 10:05:26 +08:00
    强硬一点
    mandy0119
        15
    mandy0119  
       2019-02-28 10:08:50 +08:00
    。。。java 常用的后端框架也能实现参数默认值啊。。。
    CFO
        16
    CFO  
       2019-02-28 10:10:31 +08:00 via Android
    required = false,defaultValue = 0
    我是后端 支持你怼回去
    liuml
        17
    liuml  
       2019-02-28 10:11:16 +08:00
    很显然是后端问题,后端不配合你开发工作,然后楼主也要反思下自己沟通方面是不是存在问题,如果好好沟通都没有效果的话,那你可以上报领导了!
    whypool
        18
    whypool  
       2019-02-28 10:11:51 +08:00
    后端懒,代码没扩展性
    请求用实体对象去接收,缺少字段就报错,如果需求有变,字段的增删,后端改到哭,自己挖的坑,自己跳
    real3cho
        19
    real3cho  
       2019-02-28 10:13:19 +08:00
    什么叫”代码都写好了,你让我怎么改?“
    又不是不可逆操作,默认参数都实现不了,算哪门子大佬。
    ghostg00
        20
    ghostg00  
       2019-02-28 10:14:04 +08:00
    这么简单的东西 就是后端菜 再不就是 后端不想改
    triptipstop
        21
    triptipstop  
       2019-02-28 10:16:26 +08:00   2
    我倒是很希望 用上不上的参数 就别传给我了
    可是 很多前端 非要传个空值给我 说懒得做判断?
    是这回事儿吗?
    yanqing07
        22
    yanqing07  
       2019-02-28 10:21:09 +08:00
    不给默认值,然后要你全部给个 0,那和给默认值有什么区别。
    这时候肯定叫上产品一起讨论啊,不要自己一个去的。
    前后端都是为这个产品(不是指人)服务的,不符合需求肯定是要改的。大家在商量下才能做出产品,那有各做的各的。而且,做完不能改的情况一般是这个接口很多不同端在用,才可能没法改。但是,肯定有折衷方案,例如,在这接口基础上扩展一个
    Malthael
        23
    Malthael  
       2019-02-28 10:37:10 +08:00
    后端就他一个吗?不要怂,怼死他
    v2chou
        24
    v2chou  
       2019-02-28 10:46:03 +08:00
    后端这么叼? 怼死他,还代码都写好了,你让我怎么改,
    metabot
        25
    metabot  
       2019-02-28 10:48:36 +08:00 via Android
    换 GraphQL 皆大欢喜
    tongz
        26
    tongz  
       2019-02-28 10:52:32 +08:00
    传什么参数怎么传这种问题一般是谁嗓门大谁说了算
    Vegetable
        27
    Vegetable  
       2019-02-28 10:59:42 +08:00
    叹为观止...
    我决定去找一下他说的不能设置默认值这个规范的出处,并顺便找找有没有说怎么处理空值.
    Cbdy
        28
    Cbdy  
       2019-02-28 11:01:53 +08:00   2
    我有的时候看一些后端程序员的代码,会想:天呐,写这个接口的是羊驼吗?
    Damon4V
        29
    Damon4V  
       2019-02-28 11:02:53 +08:00
    后端自己学起来,这样就可以直接怼回去:“我来写,你滚蛋”;
    img src="https://cdn.v2ex.com/gravatar/545227f864737f06114fc0bae9754049?s=48&d=retro" class="avatar" border="0" align="default" alt="karllynn" data-uid="317315" />
        30
    karllynn  
       2019-02-28 11:08:43 +08:00
    为啥不能设置默认值,什么见鬼的规范,文档写清楚不就完了=,=
    af463419014
        31
    af463419014  
       2019-02-28 11:27:08 +08:00
    这个后端不是懒就是菜,欺负新人还没人品
    Hieast
        32
    Hieast  
       2019-02-28 11:33:13 +08:00 via Android
    可选的参数应该后端实现默认值,嗯,我是后端。

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

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

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

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

    照着接口文档写,后端没正确返回是后端的问题,你自己没看明白是前端的问题。
    职责很明确的。
    wolfie
        37
    wolfie  
       2019-02-28 13:17:59 +08:00
    『他说,那你把所有未填的筛选条件都赋个 0 传过来呀』还有这么干的?
    mxy940127
        38
    mxy940127  
       2019-02-28 13:24:10 +08:00
    不用想了 不是后端水平太菜 就是太懒
    v2epS
        39
    v2epS  
       2019-02-28 13:48:57 +08:00
    后端问题~参数可以缺省很正常需求
    wysnylc
        40
    wysnylc  
       2019-02-28 14:09:11 +08:00
    后端彩笔
    10Buns
        41
    10Buns  
       2019-02-28 14:29:45 +08:00
    后端开了,我来和你合作哈哈哈
    183387594
        42
    183387594  
       2019-02-28 14:48:53 +08:00
    为啥没后端吐槽的 ,我们客户端传 空 传 0 还传字符 'null' 我都惯着他
    fareware
        43
    fareware  
       2019-02-28 16:30:23 +08:00
    我写的 bug 不可能有问题!
    xiaoxinxiaobai
        44
    xiaoxinxiaobai  
       2019-02-28 16:44:50 +08:00 via Android
    首先你不要改产品设计,可以自己构造请求嘛,可以把全部参数传过去,空值就好,总有办法解决,再者就是沟通嘛,大家都说了后端不是懒就是水平不行,或者他沟通也不行,被人怼有 bug 难免有情绪吧
    sonyxperia
        45
    sonyxperia  
       2019-02-28 16:48:30 +08:00
    垃圾后端,建议打一顿
    dmjob2015222
        46
    dmjob2015222  
       2019-02-28 18:05:44 +08:00
    拉出去,一顿胖揍,问题圆满解决!
    scnace
        47
    scnace  
       2019-02-28 18:11:43 +08:00 via Android
    这个简单啊!把后端的 leader 后端 你自己的 leader 产品拉一个群 把事情(和 curl )发出来 @一下 leader 就可以了
    hcy1996
        48
    hcy1996  
       2019-02-28 18:14:47 +08:00
    一个小建议 前端也可以适当学学后端 不然听他忽悠你还不能反驳他
    limuyan44
        49
    limuyan44  
       2019-02-28 18:15:09 +08:00 via Android
    有可能是真的菜。。
    Yarnus
        50
    Yarnus  
       2019-02-28 22:12:03 +08:00
    不是偷懒就是菜...
    zj9495
        51
    zj9495  
       2019-02-28 22:17:51 +08:00
    又懒又菜
    981764793
        52
    981764793  
       2019-03-01 00:07:42 +08:00 via Android
    我做 android 的时候接口有问题出现多了都说你把代码打开我看看。。。现在做后端,出问题都说 url 发来,我自己慢慢看会
    q8164305
        53
    q8164305  
       2019-03-01 00:15:25 +08:00 via Android
    还是自己学点后端的,很多后端不仅菜而且脾气还大,跟他们沟通的时间,代码都看完了
    rob001
        54
    rob001  
       2019-03-01 01:45:37 +08:00
    后端应该是能处理的,前端放 0 和后端放 0 都可以,按道理是后端的锅,无参数则放 0 这件事真要做的话,也应该是后端来做;
    jssyxzy
        55
    jssyxzy  
       2019-03-01 02:05:11 +08:00
    神 tm 阿里规范。
    这种东西参考就是了,死扣的明显就是新手,半吊子。
    jssyxzy
        56
    jssyxzy  
       2019-03-01 02:06:11 +08:00
    @q8164305
    我就是后端方向的,不过我确实遇到的人里面,前端好像整体来说确实比后端容易相处。
    NicholasYX
        57
    NicholasYX  
       2019-03-01 08:25:33 +08:00 via iPhone
    后端不是菜就是懒
    xuanbg
        58
    xuanbg  
       2019-03-01 08:30:04 +08:00   1
    @af463419014 你错了,这个后端是又懒又菜,还极端不负责任!
    没有条件传 0 ? 0 就不能是条件??真到业务就是要筛选 0 的时候就傻逼了。。。都 9102 年了,还有人以为 null 是个没用的东西吗?
    vindurriel
        59
    vindurriel  
       2019-03-01 08:30:39 +08:00 via iPhone
    如果会用 swagger 的话 自己调不就好了 不用沟通
    Cbdy
        60
    Cbdy  
       2019-03-01 09:01:39 +08:00
    @xuanbg 我还真遇到过这样的人,据说还是阿里出来的
    Outshine
        61
    Outshine  
       2019-03-01 09:19:53 +08:00
    前端设置默认值,如果后期要该默认值 app 岂不是还要更新?
    xianxiaobo
        62
    xianxiaobo  
       2019-03-01 09:21:58 +08:00
    这个虽然是后端态度不好,但是前端确实是可以做的,产品说不能有全部,假设是一个下拉框,那就是必填?如果是多选框,没选就传 0,选了就传选好了的 ID,也有可能是我没理解楼主意思。
    guixiexiezou
        63
    guixiexiezou  
       2019-03-01 09:38:49 +08:00
    我是后端,这后端确实问题很大。一般情况下不传值都会默认一个值的
    southsala
        64
    southsala  
       2019-03-01 11:31:22 +08:00
    后端做了必传判断,让他改成可选就完了,就是懒
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     976 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 18:53 PVG 02:53 LAX 11:53 JFK 14:53
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86