V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Sponsored by
LinkedIn
2000 个不用坐班的远程好工作在召唤你 · 弹性上班不打卡,工作和生活都能拥有
2000 个不用坐班的全球远程工作,帮助 V2EX 的小伙伴开启全新的工作方式。
Promoted by LinkedIn
sm0king
V2EX  ›  职场话题

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

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

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

    联调的时候,接口一直报缺少查询条件,也没说缺少什么,于是就问后端怎么回事。 后端刚开始说,我 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
    后端自己学起来,这样就可以直接怼回去:“我来写,你滚蛋”;
    karllynn
        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
    这个问题是一个设计哲学问题,首先说为什么阿里不提供默认值,因为在无状态,可重入的时候,后端提供默认似乎就是成了有状态。其次 所以函数要设计功能是原子正交,如果参数带上变化可以获取相应的计算结果,那么一定会使用参数,而不会内部使用默认值。

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

    另外我觉得你们就是一个沟通问题,你发这个贴,你们还是没有沟通,没有多少结果,重要的心平气和的喊上你的主管,你和他,以及他的主管,大家把这个事摊开说,约定清楚了,以后就不会扯皮。重要的是建立规则和优化规则。
    mejee
        34
    mejee  
       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   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1810 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 64ms · UTC 17:04 · PVG 01:04 · LAX 10:04 · JFK 13:04
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.