V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
fansangg
V2EX  ›  程序员

分享一个猪队友,都 8012 年了居然还有那么菜的后端可以混迹在互联网公司!

  •  
  •   fansangg · 2018-08-15 02:08:00 +08:00 via iPhone · 31488 次点击
    这是一个创建于 2291 天前的主题,其中的信息可能已经有所发展或是发生改变。
    今天快下班的时候,写完一个功能正准备测试,然后调接口的时候发现 token 过期了,然后重新登录。

    登录的流程之前走了不下一百遍,没想到居然报错了!查看日志发现是 json 解析报的错,如何我看了一下返回的 json 格式,发现地址列表返回的居然是空字符串

    ``` address:"" ```

    然后我找对接的后台同事说,我说空的话你要返回一个 jsonarray 啊,就是[]。



    然后等了 10 几分钟,后台的兄弟和我说改好了。然后我再调了一遍,依然是报错,然后看了一下返回的数据...

    address:"[]"

    我的天呐,真的是改好了,太优秀了!从业以来遇到过最优秀的同事!看起来也应该有 30 岁了,怎么还会那么菜!他是怎么混过来的!
    第 1 条附言  ·  2018-08-15 14:04:09 +08:00
    太优秀了,一觉醒来居然那么多回复,看到一堆人在说没有统一规范,没有好好沟通,我真是纳闷了,json 格式规范你们看过吗?还要订什么规范?我从业四年真的没见过这样返回数据的。
    第 2 条附言  ·  2018-08-17 10:50:18 +08:00
    各位「猪」们不要再回复了,各位有浏览论坛的时间不如好好学习,希望各位都能成为大牛,让世界以你为规范,加油!💪
    319 条回复    2018-08-20 03:09:59 +08:00
    1  2  3  4  
    codermagefox
        1
    codermagefox  
       2018-08-15 03:13:32 +08:00 via iPhone
    你确定他不是故意这么返回给你的?
    meloner
        2
    meloner  
       2018-08-15 05:24:32 +08:00 via Android   ❤️ 4
    幼稚, 本质上是个沟通问题, 你需要一些防御性编程的意识, 我也是前端
    ryd994
        3
    ryd994  
       2018-08-15 06:20:30 +08:00 via Android   ❤️ 1
    你们接口文档不先商量一下吗?
    fansangg
        4
    fansangg  
    OP
       2018-08-15 06:39:48 +08:00 via iPhone   ❤️ 9
    @ryd994 这还需要商量,空数组返回 string 有人能这样干吗?
    fansangg
        5
    fansangg  
    OP
       2018-08-15 06:45:09 +08:00 via iPhone
    @codermagefox 应该不是,我看着他写的返回了一个空的 array,然后转 json 到我这就是“[]”带引号的 string,他那边是 php 写的,我对 php 不太熟,但是我觉得肯定是要转成 jsonarray 这样
    fansangg
        6
    fansangg  
    OP
       2018-08-15 06:47:53 +08:00 via iPhone   ❤️ 1
    @meloner 这你也要来杠一下,行行行,您老写代码谨慎,我甘拜下风。
    matsuz
        7
    matsuz  
       2018-08-15 06:49:01 +08:00 via iPhone
    有可能是在某一步被自动转换成了 string,而他没有注意到这个问题
    fanqianger
        8
    fanqianger  
       2018-08-15 06:52:59 +08:00   ❤️ 6
    看不出来这有啥好黑的。你和他沟通一下就好了,在网上发帖起不到任何实质性的作用。
    fansangg
        9
    fansangg  
    OP
       2018-08-15 06:59:04 +08:00 via iPhone   ❤️ 1
    @fanqianger 我没有在黑什么,我只是在吐槽,因为猪队友的低端错误延误了我的工作进度,沟通什么的发现问题就马上沟通了,但是在我的认知里,这种错误是不应该发生的
    hanxiV2EX
        10
    hanxiV2EX  
       2018-08-15 07:17:55 +08:00 via Android
    自己做后端
    hrong
        11
    hrong  
       2018-08-15 07:21:03 +08:00 via Android   ❤️ 75
    一点小事就生气, 你也干不了什么大事。
    Quarter
        12
    Quarter  
       2018-08-15 07:26:11 +08:00 via iPhone   ❤️ 1
    额,我觉得可能只是失误,有的时候很就没有改这部分代码,然后改的时候就忘记代码逻辑,以为是这么改的,没想到改的还不是最终结果,你跟他说写完了先 postman 测试一下对不对,应该也算不上猪队友吧,楼主也别生气了,如果他告诉你只能返回字符串,是改不了数组的,那就比较猪队友了,其实这种错误还是挺常见的,莫生气
    haimall
        13
    haimall  
       2018-08-15 07:34:13 +08:00 via Android   ❤️ 11
    在别人身上看到的缺点,都是自己的映射。
    IssacTomatoTan
        14
    IssacTomatoTan  
       2018-08-15 07:34:58 +08:00 via Android
    后台 MVC 说没有值系统就会返空 不会给你空数组。 各种只会数据库取状态返回参数让前台判断只为了展示给用户 完成 / 未完成
    waruqi
        15
    waruqi  
       2018-08-15 07:38:21 +08:00 via Android
    这种事情多了去了 没必要特地拎出来说。习惯就好。
    meteor957
        16
    meteor957  
       2018-08-15 07:48:09 +08:00 via Android   ❤️ 2
    大惊小怪
    jiangjz
        17
    jiangjz  
       2018-08-15 07:49:09 +08:00 via Android
    我们前端都是自己解决这些问题的
    nosay
        18
    nosay  
       2018-08-15 07:55:50 +08:00 via iPhone   ❤️ 1
    身为后端,每次都会在 postman 里测试好,然后发接口文档给相关同事。但还是依然避免不了 ios 那大兄弟 app 因类型问题闪退的情况,互相鄙视已属常态,淡定就好
    jorneyr
        19
    jorneyr  
       2018-08-15 08:03:35 +08:00
    可能是你们的规范没有规定好什么情况返回什么数据,我们有强制规定。
    lyklykkkkkkk
        20
    lyklykkkkkkk  
       2018-08-15 08:19:52 +08:00   ❤️ 8
    另一个思路是

    反思自己如何沦落到与之为伍
    natscat
        21
    natscat  
       2018-08-15 08:21:32 +08:00
    不说前面的谁对谁错 改了之后居然返回"[]" 这样写的我是没见过的
    duoglas
        22
    duoglas  
       2018-08-15 08:22:40 +08:00   ❤️ 1
    遇到这类问题不去推进整体流程规范改进避免后续发生,来这里发个吐槽抖机灵,不怕以后的面试官在这里看到黑历史么?
    qilishasha
        23
    qilishasha  
       2018-08-15 08:28:22 +08:00
    不是应该返回 null 吗?
    hrong
        24
    hrong  
       2018-08-15 08:29:40 +08:00 via Android
    空数组(数组无元素的特殊情况)
    空字符串(字符串无元素的特殊情况)
    null

    上面这些概念要先在项目组里面整明白了,大家也就不会推脱责任骂对方猪队友了吧。。。
    Braid
        25
    Braid  
       2018-08-15 08:30:44 +08:00   ❤️ 3
    楼主在这里抛了个很水的一个问题,感觉人就是水的,哈哈哈哈
    tnt666666
        26
    tnt666666  
       2018-08-15 08:32:49 +08:00   ❤️ 6
    天天写前端不烦吗,还 bb 啥,自己技术 low 怪谁
    beastk
        27
    beastk  
       2018-08-15 08:33:39 +08:00 via iPhone
    你们没有统一的规范,就是 50 步笑一百步,谁也别笑话谁。
    Sharuru
        28
    Sharuru  
       2018-08-15 08:34:13 +08:00 via Android   ❤️ 3
    有些开发在接口返回的时候,图省事都是返回 String 型的。
    比如 "id": "10",这种情况下,数组为空返回了 "" 也是常见的情况。(可能后端还纳闷为什么还要特地给你加两个括号呢)

    归根结底,还是对于数据的处理没有事先的定义。
    swcat
        29
    swcat  
       2018-08-15 08:37:02 +08:00 via Android
    这种东西定义该有提前约定的,没有按照约定来,怼回去就可以了
    v3exhost
        30
    v3exhost  
       2018-08-15 08:40:09 +08:00
    你们自己不解析空字符串的?
    前端这么好干,什么都不用做?
    phpcxy
        31
    phpcxy  
       2018-08-15 08:43:30 +08:00
    "[]" 是有点好笑,到底是怎么做到的呢?我掐指一算他应该是本想在 PHP 里面定义数组,但写错了$address = "[]" 手抖打多了引号而已,改过来就好啦。
    suikator
        32
    suikator  
       2018-08-15 08:45:37 +08:00 via Android
    原来后端这么好干 什么都不用做
    asadegg
        33
    asadegg  
       2018-08-15 08:45:52 +08:00
    接口文档了解一下
    sonyxperia
        34
    sonyxperia  
       2018-08-15 08:50:09 +08:00
    可能他确实不知道传给你的格式不对了
    zjsxwc
        35
    zjsxwc  
       2018-08-15 08:50:09 +08:00   ❤️ 3
    address 是个单数啊,命名成 addresses 更合理
    wjpdev
        36
    wjpdev  
       2018-08-15 08:58:14 +08:00
    先两边约定好接口, 否则接口放到最后改来改去,自找麻烦。
    947211232
        37
    947211232  
       2018-08-15 08:59:38 +08:00
    不要过分苛刻要求,多沟通就好。
    niaobulashi
        38
    niaobulashi  
       2018-08-15 09:02:12 +08:00
    我猜楼主刚毕业
    maninfog
        39
    maninfog  
       2018-08-15 09:02:50 +08:00 via Android   ❤️ 2
    技术上的事情拿来吐槽,稍显幼稚了,沟通一下秒秒钟解决的事情,说不定别人只是手抖了呢
    keepeye
        40
    keepeye  
       2018-08-15 09:08:03 +08:00
    碰过一个第三方平台的接口,返回的 json: "{\"result\":\"0\",\"err_msg\":\"设备编号错误\"}" 两头有双引号
    ren2881971
        41
    ren2881971  
       2018-08-15 09:08:52 +08:00   ❤️ 2
    都是混口饭吃嘛。。 也不是啥高精尖的技术行业。
    LZ 想想你也会有到 30 岁的时候。。。 包容一下,你敢保证你从来没给别人挖过坑么?
    lzs5240
        42
    lzs5240  
       2018-08-15 09:09:50 +08:00
    目测是个新人
    hasbug
        43
    hasbug  
       2018-08-15 09:10:54 +08:00
    粗心或者没理解是数组还是字符串。
    属于沟通不到位,说实话,我经常这样,我前端,然后我现在总怀疑自己理解错误,总会跟后端再次确认,但是呢,人家就不耐烦,呵呵。
    killerv
        44
    killerv  
       2018-08-15 09:11:33 +08:00
    我在想为什么它能生成这样的 json,难道是自己手动拼的?
    jimplanck
        45
    jimplanck  
       2018-08-15 09:14:19 +08:00
    作为一个程序员不懂得沟通是很吃亏的
    koalli
        46
    koalli  
       2018-08-15 09:19:02 +08:00
    后端 php 的吧?我们后端也是 php 的,空数组返回 false 你敢信?实际上这是工作流程和规范的问题。
    服务端作为一个黑盒系统,不能给出稳定的类型和结果,对接的时候就是各种坑,到哪里都是坑。
    后端不跑测试用例的,对接的时候不是给 api 而是口头说的(很多),这种公司迟早会凉凉的。
    huabinglan
        47
    huabinglan  
       2018-08-15 09:19:50 +08:00
    JSON 也是有数据类型的,现在前端规范也是要求强类型相等(===),现在后端返回这种东西,面上来看后端本身就不严谨,这也不是约定的问题,而是 JSON 本身就有数据类型,按照正确数据类型返回是自然而然的事。同理存在多个 address,如果数据库没记录本身就应该返回空数组,没的说
    a191243108
        48
    a191243108  
       2018-08-15 09:20:28 +08:00
    @keepeye 没问题呀这种,你 JSON.parse()就可以了,格式换一下就好了
    u14e
        49
    u14e  
       2018-08-15 09:21:43 +08:00
    所以我去做后端了
    7654
        50
    7654  
       2018-08-15 09:22:26 +08:00
    前后端分离的一个好处就是可以互相甩锅吧
    a191243108
        51
    a191243108  
       2018-08-15 09:24:01 +08:00
    这些都是小问题,没什么好烦恼的,你说一句话,不用几秒就搞定的事情,跟他沟通好,按照文档格式来,你就说这样防止出错,我估计别人手抖了一下,哈哈哈
    shily
        52
    shily  
       2018-08-15 09:26:52 +08:00 via Android
    @ren2881971 #41 我敢保证不挖这么 low 的坑。
    enenaaa
        53
    enenaaa  
       2018-08-15 09:27:39 +08:00
    应该是一个知识盲点而已。 反倒楼主, 动不动就猪队友叫唤,你就没出错的时候?就没懵逼的时候?

    设身处地地想想,其他同事也这么怼你,会有何感想。
    darktutu
        54
    darktutu  
       2018-08-15 09:29:22 +08:00
    不懂 php,但是这个变量的命名不就应该是返回一个 string 吗?也不是复数的为啥是个数组
    geying
        55
    geying  
       2018-08-15 09:32:03 +08:00
    有发帖的功夫不如两个人对下文档和数据,解决一次大家都知道怎么回事

    前端呀~
    Tink
        56
    Tink  
       2018-08-15 09:32:30 +08:00
    这个后端是个新人
    ala2008
        57
    ala2008  
       2018-08-15 09:33:56 +08:00
    返回[]是合理的,某种情况下,返回''''也是合理的。看数据格式约定
    jdgui
        58
    jdgui  
       2018-08-15 09:35:10 +08:00   ❤️ 1
    楼上喷楼主的大概都是后端的。。
    USNaWen
        59
    USNaWen  
       2018-08-15 09:36:10 +08:00
    文档啊文档。。。。一开始就该订好存档下来啊
    UIXX
        60
    UIXX  
       2018-08-15 09:36:50 +08:00
    接口文档+分离测试 谁的锅谁背
    wanglilong
        61
    wanglilong  
       2018-08-15 09:38:53 +08:00
    公司没有统一开发规范,50 步笑百步。
    keepeye
        62
    keepeye  
       2018-08-15 09:40:56 +08:00
    @a191243108

    JSON.parse('"{\"result\":\"0\",\"err_msg\":\"设备编号错误\"}"')
    overflowHidden
        63
    overflowHidden  
       2018-08-15 09:45:34 +08:00
    哈哈哈哈哈哈。。其实我也遇到过,我说返回一个数组,然后就变成了'[22,22]'。。。差点被气哭
    ioth
        64
    ioth  
       2018-08-15 09:46:31 +08:00
    别把别人想得太好,或者说别人为什么要对你太好?
    vipppppp
        65
    vipppppp  
       2018-08-15 09:47:28 +08:00
    小公司的前后端分离。。一言难尽。。
    前端传来的值,不传 /None/"",都可能。。
    后端传回去的值,{"data" : {"data": []} / {"data": []}
    watzds
        66
    watzds  
       2018-08-15 09:49:33 +08:00 via Android   ❤️ 3
    这种低级错误,竟然这么多人辩解,可见这土壤多么肥沃,工作写代码不讲究
    v2chou
        67
    v2chou  
       2018-08-15 09:51:14 +08:00
    @nosay 捉到一个好后端 我们后台估计就是脑袋里过了一遍然后说成功了 然后要我调 然后调的时候各种报错 美名其曰 前后端联调
    leejoye
        68
    leejoye  
       2018-08-15 09:51:29 +08:00
    已 block
    wpby
        69
    wpby  
       2018-08-15 09:52:54 +08:00
    你这么吊,咋不去做后端?咋不去做 cto
    amon
        70
    amon  
       2018-08-15 09:53:28 +08:00
    我猜楼主用的是 php
    kera0a
        71
    kera0a  
       2018-08-15 09:53:34 +08:00 via iPhone
    这种情况后端的锅没得说吧,类型都给错误了还防御性编程个啥,弹出 json 解析失败就是最好的防御了,强行解析你保不住下次他给你个整型呢
    watzds
        72
    watzds  
       2018-08-15 09:53:42 +08:00 via Android
    我还见过那种徒手字符串拼接 json 的人
    overflowHidden
        73
    overflowHidden  
       2018-08-15 09:54:09 +08:00
    不过经过楼主这么一发帖和楼上一些人的言论让我明白了这种‘失误’可能在后端很正常,放宽心咯
    kera0a
        74
    kera0a  
       2018-08-15 09:55:42 +08:00 via iPhone
    @overflowHidden 我觉得这些人连这些严谨都没自觉挺可怕的
    jinsongzhao
        75
    jinsongzhao  
       2018-08-15 09:56:17 +08:00
    这体现不了后端不懂[],干嘛不做个懂后端的前端呢。只要不是手工打造的 json,如果返回的属性类型是 string,编码器会自动加上引号。如果是 object,通常也会变成字符串。最好是明确属性类型是个数组。
    rockyou12
        76
    rockyou12  
       2018-08-15 09:59:55 +08:00   ❤️ 1
    @ala2008 敢把数组返回“”,做安卓和 ios 的会半夜把你闷棍敲死好不。好多前端 js 写多了不重视数据类型,在这里开脱真的搞笑。前后分离很重要一点不就是可以做多种客户端,java 和 object-c 可是静态类型的,真把这些数据类型乱传,跑的时候各种闪退还要自己抓包去找锅,真的杀人的心都有了……
    a191243108
        77
    a191243108  
       2018-08-15 10:07:55 +08:00
    @keepeye 牛皮,原来你指加多了,一对分号''。我以前也碰到过
    hotdogwc
        78
    hotdogwc  
       2018-08-15 10:10:34 +08:00
    这算啥,某微软亚洲研究院前员工(不知道真假,整天穿个微软的 T 恤在公司晃,LinkedIn 也显示他在那干了两年),收不到 iOS 推送,跟他联调,怎么都收不到,我这边自己接了个极光可以收到,从早晨调到下午,原来是他那边推送第三方库报错了请求根本没发出去。。。。。还有,有一次我发请求 404,我跟他说路由没找到,你帮我看看呗,结果他一直在让我换不同的 header 发,我跟他说没有可能你先不匹配路由就检查 header 吧,他跟没听见一样还让我换 header,最后还是路由的问题。。。
    suikator
        79
    suikator  
       2018-08-15 10:12:09 +08:00 via Android
    @watzds 正好可以把一堆后端水货 block 了
    jzds001
        80
    jzds001  
       2018-08-15 10:14:45 +08:00   ❤️ 2
    无语了,这算什么问题?你就拿来黑了?
    weizhen199
        81
    weizhen199  
       2018-08-15 10:17:07 +08:00
    "[]"确实很 low
    tinycold
        82
    tinycold  
       2018-08-15 10:17:50 +08:00   ❤️ 10
    我跟你说,你们这个算好的,我以前遇到一个,没有东西,就不给我返回,Request 就这么挂着。

    我问他,你这个怎么次次都超时,我把超时限制关闭了都还一直不返回,怎么回事儿,

    那哥们儿说: 没有东西,我怎么返回嘛!! 。

    dei, 理直气壮的,我还觉得他说得多有道理的
    Hardrain
        83
    Hardrain  
       2018-08-15 10:19:00 +08:00
    @meloner 不按规范成了沟通问题?

    鲁棒性那是考虑用户 /合作方错误操作 /输入错误数据。
    不是考虑自己一方违反规范
    julio867
        84
    julio867  
       2018-08-15 10:22:21 +08:00   ❤️ 1
    嗯,这样的人应该挺多的吧~这两年遇到不少后台开发做接口的,有的人很规范,而有的人直接把整个数据库都暴露给你,然后跟你说“字段都给了,用什么自己挑”,当然密码字段也会出来····
    cncqw
        85
    cncqw  
       2018-08-15 10:22:42 +08:00
    @keepeye 这个是返回类型写 string 结果接口的 json 数据被转成字符串了
    easylee
        86
    easylee  
       2018-08-15 10:22:53 +08:00 via Android
    @hrong #11 你这条回复 26 赞,哈哈哈。用个知乎都生气,你能干啥大事?
    c0878
        87
    c0878  
       2018-08-15 10:25:44 +08:00
    @meloner 防御性编程技术笑哭
    Sparetire
        88
    Sparetire  
       2018-08-15 10:26:12 +08:00 via Android   ❤️ 7
    整个帖子的回复简直不忍直视。。低级错误也能有这么多人洗
    鲁迅: 我觉得防御性编程防不了 sb
    qibing2000
        89
    qibing2000  
       2018-08-15 10:26:12 +08:00
    @tinycold 这个我真的笑了。
    Raymon111111
        90
    Raymon111111  
       2018-08-15 10:27:10 +08:00
    有接口文档吗?
    huoluobo
        91
    huoluobo  
       2018-08-15 10:29:26 +08:00
    我也遇到过不少次,给后端说了他也好像理解了,然后改半天说改好了,拿回来一看还是错的,根本没变化不知道改的啥。。。
    SirLostWhite
        92
    SirLostWhite  
       2018-08-15 10:29:38 +08:00
    有接口文档和数据字典就好了
    easylee
        93
    easylee  
       2018-08-15 10:30:55 +08:00 via Android   ❤️ 6
    这种低级问题都能洗地,还说楼主的锅,我也是服了楼上洗地的各位,告辞,惹不起你们,今天你们可以喷楼主,说不定明天我发帖就来喷我了,惹不起惹不起。
    suikator
        94
    suikator  
       2018-08-15 10:33:11 +08:00 via Android
    @tinycold 都是腰间盘 为什么他那么突出 报下公司名 大家一起入职 😂
    duan602728596
        95
    duan602728596  
       2018-08-15 10:35:30 +08:00 via iPhone
    真的,幸好 js 数据类型没多少,要不然真防御不过来 sb
    skSK09
        96
    skSK09  
       2018-08-15 10:40:33 +08:00
    hh
    NullException
        97
    NullException  
       2018-08-15 10:43:58 +08:00   ❤️ 1
    前端不会 ajax 交互的一抓一大把。
    janus77
        98
    janus77  
       2018-08-15 10:46:52 +08:00
    这还用规范?在我看来,如果明白确定是「 json 」格式,那所有不标准的 json 就统统是错误的,包括 PHP 的动态 key 数字 key 这种,都不算是标准的 json。
    如果你要问我要规范,那行,json 规范自己看下,严格遵守就 OK
    ChristopherWu
        99
    ChristopherWu  
       2018-08-15 10:48:16 +08:00
    我艹,评论的都是当真?
    66beta
        100
    66beta  
       2018-08-15 10:48:20 +08:00 via Android
    还是自己校验下吧,真的,心累
    1  2  3  4  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1005 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 22:14 · PVG 06:14 · LAX 14:14 · JFK 17:14
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.