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

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

  •  
  •   fansangg · 2018-08-15 02:08:00 +08:00 via iPhone · 31514 次点击
    这是一个创建于 2294 天前的主题,其中的信息可能已经有所发展或是发生改变。
    今天快下班的时候,写完一个功能正准备测试,然后调接口的时候发现 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  
    maxiujun
        101
    maxiujun  
       2018-08-15 11:00:53 +08:00
    jjyy
    maxiujun
        102
    maxiujun  
       2018-08-15 11:01:17 +08:00
    jjyy 感觉还是太年轻
    maxiujun
        103
    maxiujun  
       2018-08-15 11:01:42 +08:00
    j j y y 感觉还是太年轻
    564425833
        104
    564425833  
       2018-08-15 11:05:56 +08:00
    哈哈,我公司起码有三个这样的后台。。。每次我取的时候都要预先判断一下是不是数组。
    xianxiaobo
        105
    xianxiaobo  
       2018-08-15 11:09:16 +08:00   ❤️ 6
    这就猪队友了,还好我没遇到楼主这样的人。
    zhangyf
        106
    zhangyf  
       2018-08-15 11:11:47 +08:00
    很棒!
    mcluyu
        107
    mcluyu  
       2018-08-15 11:21:29 +08:00
    司空见惯。。。我们公司这些,接口写好了,自己连通不通都不试一下的, 等着我去调再告诉他: 某个接口 404,500,405。。。。。没数据了管你丫是个数组还是啥的, 直接返回 null,能怎么办,经历的多了,就无力吐槽了,要想不崩溃就自己加校验, 不然就不管, 直接让它崩了,再让后台改去吧,给一个测试包给他们,自己加班改吧,我回家了
    chniccs
        108
    chniccs  
       2018-08-15 11:26:20 +08:00
    听到是 PHP 我就理解了,这种我也遇到很多。之前做 android,对类型是强校验的,后台 PHP 的经常会出这种问题,你多跟他说几次就好了。毕竟 PHP 里没这个概念。。。
    corningsun
        109
    corningsun  
       2018-08-15 11:29:27 +08:00
    alexzhou
        110
    alexzhou  
       2018-08-15 11:30:15 +08:00
    这难道不是沟通的问题
    miniwade514
        111
    miniwade514  
       2018-08-15 11:36:03 +08:00   ❤️ 6
    互联网公司门槛很低的,不要觉得自己做的是什么高端职业,调整一下你的期望值。
    这么点事儿还要发帖吐槽,是不是有点咋呼了。。
    rustkeyboard
        112
    rustkeyboard  
       2018-08-15 11:36:29 +08:00
    @nosay,你的头像亮了
    mcluyu
        113
    mcluyu  
       2018-08-15 11:39:42 +08:00
    @corningsun 额。。我可能没太说明白,假如这个字段的类型本该是个数组,无数据时不应该返回一个空数组吗? 你直接返回 null ?甚至这个字段就直接消失了?
    zsy979
        114
    zsy979  
       2018-08-15 11:45:05 +08:00
    看到这个问题,弱弱问一下纠结很久的问题,规定过字段返回 json 的情况下,有个字段是 null 我可以自己手动补上,但是如果我接口 error 了,要手动补上所有字段?
    zonyitoo
        115
    zonyitoo  
       2018-08-15 11:48:41 +08:00
    这看起来用的就是 PHP 写的。。。
    mcluyu
        116
    mcluyu  
       2018-08-15 11:55:36 +08:00
    @zsy979 额,你认真的吗。。。ERROR 了就走 ERROR 方法直接报错误了,不会解析 json 了啊。。。
    ImJoeHs
        117
    ImJoeHs  
       2018-08-15 11:56:12 +08:00
    @tnt666666 #26 你就挺 low 的其实
    ImJoeHs
        118
    ImJoeHs  
       2018-08-15 11:57:28 +08:00
    @ChristopherWu #99 评论真 j2 精彩
    Alicelj
        119
    Alicelj  
       2018-08-15 11:59:25 +08:00
    哈哈哈哈哈,莫名的对自己有信心了哇!
    reus
        120
    reus  
       2018-08-15 12:03:20 +08:00
    一看就是用弱类型语言
    inkedawn
        121
    inkedawn  
       2018-08-15 12:04:26 +08:00
    这是不懂 json 更不知道 jsonarray 吧……
    懂的话说[]当然就知道是啥了,不懂的就可能这样"[]",可能他还奇怪为什么要加个[]呢
    ech0x
        122
    ech0x  
       2018-08-15 12:06:07 +08:00 via iPhone
    各位都是不用写测试的嘛,这个不是写个单元测试跑一遍就能发现的问题嘛……
    fml
        123
    fml  
       2018-08-15 12:08:45 +08:00
    @haimall #13 递归了
    chairuosen
        124
    chairuosen  
       2018-08-15 12:09:38 +08:00   ❤️ 3
    评论真精彩,洗地的后端真多,这都能洗?
    reus
        125
    reus  
       2018-08-15 12:39:42 +08:00   ❤️ 13
    block 了一大堆不配做后端的
    是数组就一直返回数组,是字符串就一直返回字符串,一会数组一会字符串,就是不合格的接口
    这地谁洗谁是傻逼,大傻逼
    ZSeptember
        126
    ZSeptember  
       2018-08-15 12:44:52 +08:00   ❤️ 7
    看评论就知道,这个行业现在就是这样的了,一个个 SB 一样,还总想指点别人。
    天天吹的,十几年如一年的,都混的不错,真喜欢技术的,技术不错的倒混的一般。
    tnt666666
        127
    tnt666666  
       2018-08-15 12:47:30 +08:00 via Android
    @ImJoeHs 跳来跳去干啥呢,给你能的
    Ixizi
        128
    Ixizi  
       2018-08-15 12:52:14 +08:00
    这个就很坑了。。。
    CastleBUPT
        129
    CastleBUPT  
       2018-08-15 13:08:22 +08:00   ❤️ 3
    这不是一个低级错误吗?
    JSON 不是有标准规范的吗?
    给人返回非标准规范的 JSON,不主动沟通,难道是前端的锅?
    楼里有些人真是吓到我了。
    xjiangiao
        130
    xjiangiao  
       2018-08-15 13:12:43 +08:00
    我们公司一哥们,写个 for 循环去循环一个数组,结果写成 i=0;i<=array.length,浏览器报错,这哥们告诉我查了一晚上错误不知道哪出错了,说后台 json 给的有问题。
    qq30545
        131
    qq30545  
       2018-08-15 13:21:29 +08:00
    如果最高有十级坑, 这最多算一级
    ren2881971
        132
    ren2881971  
       2018-08-15 13:37:15 +08:00
    @shily 那你继续保持吧。
    tinytin
        133
    tinytin  
       2018-08-15 13:41:29 +08:00
    接口返回格式监控。不对就直接报警
    loveCoding
        134
    loveCoding  
       2018-08-15 13:42:07 +08:00
    抱怨解决不了问题 ,好好沟通
    dearpork
        135
    dearpork  
       2018-08-15 13:46:17 +08:00
    这算好了 我司运维说拉代码报错了 截图一看用的是 git pull
    devqin
        136
    devqin  
       2018-08-15 14:13:34 +08:00
    你们为啥不推 graphql ?
    fansangg
        137
    fansangg  
    OP
       2018-08-15 14:15:09 +08:00
    @niaobulashi 你猜错了,14 年毕业的
    frantic
        138
    frantic  
       2018-08-15 14:15:25 +08:00
    我工作 这几年已经见习惯了
    fengfisher3
        139
    fengfisher3  
       2018-08-15 14:17:38 +08:00
    少见多怪吧。
    Smilecc
        140
    Smilecc  
       2018-08-15 14:24:58 +08:00   ❤️ 4
    作为一个后端我真看不下去这个帖子的评论了,这都能洗?
    明明就是写这个接口的人没有带脑子写。
    zsy979
        141
    zsy979  
       2018-08-15 14:25:50 +08:00
    @mcluyu 也不算 error 吧,就是要有一些默认的数据显示,总之就是前端要求返回规定好的字段,是 null 的话返回空的不能不返回
    jeffcott
        142
    jeffcott  
       2018-08-15 14:41:55 +08:00   ❤️ 1
    其实就是经验缺乏,很少写接口的人意识不到这个问题;这种情况还是挺普遍的,包括我自己也踩过这个坑,你跟他说一下就好了啊,他也会感激你的;

    现在 PHP7 之后也有标量类型声明和返回类型声明了,这种情况应该很好解决;

    随手一搜
    [PHP 接口返回 JSON 数据保证正确的类型难(或者麻烦)在哪? - V2EX]( https://www.v2ex.com/t/421511)
    [(3 条消息)PHP 后端很难返回规范的 JSON 数据吗? - 知乎]( https://www.zhihu.com/question/26424910)
    chocotan
        143
    chocotan  
       2018-08-15 14:46:32 +08:00
    支持楼主,我也经常遇到奇葩的
    比如 content-type 写错的,json 写成这样的 person[name]=Tome,返回的 xml 在两个引号里面的
    jeffcott
        144
    jeffcott  
       2018-08-15 14:48:30 +08:00
    再补一句,好多东西都是前后端互相帮忙,你多写一点,我就少写一点;但是我觉得最好有标准化的解决方案;
    ostholz
        145
    ostholz  
       2018-08-15 14:49:54 +08:00
    这点事也拿到 V2 来吐槽?
    xxsjudelaw
        146
    xxsjudelaw  
       2018-08-15 14:51:16 +08:00
    等你换的工作多了,呆过的公司多了,合作的人多了。你就明白林子大了什么鸟都有
    mhtt
        147
    mhtt  
       2018-08-15 14:52:10 +08:00
    嚓,我们定的规范就是没有数据,返回 null,看了贴主这个,我感觉自己尴尬了😅
    leeg810312
        148
    leeg810312  
       2018-08-15 14:55:35 +08:00 via Android
    这是不是 PHP 特有的,用.net 或 Java 写后端,从没遇到过这样的低级错误
    KgM4gLtF0shViDH3
        149
    KgM4gLtF0shViDH3  
       2018-08-15 14:59:55 +08:00
    @NullException #97 我们公司的就不会。。想想还是得去大城市大公司,小地方全是水货。
    reus
        150
    reus  
       2018-08-15 15:17:30 +08:00
    @leeg810312 go 写后端也从来不会出这种错误,类型写了数组,那返回的一定是数组,不可能变成字符串。估计吐槽楼主的都是写 PHP 的。PHP 垃圾!
    ayyll
        151
    ayyll  
       2018-08-15 15:18:55 +08:00 via Android
    写过一阵子 php 零基础直接干活的那种 额 也犯过这种错误 反正我自身是知识盲点 前端也。。也没骂我 就稍微解释一下就改了 怎么说 看人的脾气吧 当然 他只是明着没骂我。。不过他人很和气 应该不至于像楼主这种开帖骂的 噢 我不是说楼主不对 我觉着骂也挺对的 做错了嘛反正
    karllynn
        152
    karllynn  
       2018-08-15 15:19:30 +08:00
    是 null 还是有可能的。。。不一定是空数组
    wekw
        153
    wekw  
       2018-08-15 15:27:37 +08:00
    大家都是程序员,怎么就没有一个人从技术角度来解释问题呢?


    原因很简单,后端是 PHP 语言,如果不人为处理,默认就是这个样子,前端如果是 Android,会崩的。


    你让他专门处理一下就行了,三行代码的事儿。

    ---
    Athrob
        154
    Athrob  
       2018-08-15 15:30:29 +08:00
    这楼的回复真是辣眼睛, 这么低级的错误还都喷楼主? 什么风气, 我是后端都看不下去了.
    wekw
        155
    wekw  
       2018-08-15 15:35:27 +08:00
    @ZSeptember 这就是技术限制了你的想象力了,我们作为程序员,我们被雇佣的目的不是生产完美代码,而是解决实际问题。喜欢技术解决问题的能力就强?解决问题才是创造价值,才能换钱。实际上在现实中沟通能力比技术能力重要多了。
    fansangg
        156
    fansangg  
    OP
       2018-08-15 15:37:16 +08:00 via iPhone
    @Athrob 我才注册的账号,之前也是不知道贵社区什么水平,本来只是因为同事犯的一个小小错误耽误了我挺长时间而来稍稍吐槽一下,没想到会有那么多回复,而且还让人大跌眼镜。
    laoyur
        157
    laoyur  
       2018-08-15 15:41:33 +08:00
    @dearpork
    > 这算好了 我司运维说拉代码报错了 截图一看用的是 git pull

    不懂
    bolide2005
        158
    bolide2005  
       2018-08-15 15:52:38 +08:00
    关键倒还不在于规不规范,关键在于不合逻辑啊

    这样的需求,正常后端不是去查数据,然后往一个 list 里 append 数据吗?最后无论 list 是不是为空都直接返回就好了啊。按楼主的描述,后端这哥们难不成还专门判断一下 list 是不是为空,是的话返回个字符串?这操作我看不懂
    zhuangzhuang1988
        159
    zhuangzhuang1988  
       2018-08-15 15:55:59 +08:00
    打一顿就好了
    不光 程序员 vs 产品
    还有 程序员 vs 程序员
    ihavecat
        160
    ihavecat  
       2018-08-15 15:57:22 +08:00
    笑出声,前几天我同事刚遇到这样的测试
    kingme
        161
    kingme  
       2018-08-15 15:57:55 +08:00
    屏蔽好多后端水货。JSON 格式还需要约定?
    indexxuantest2
        162
    indexxuantest2  
       2018-08-15 16:00:23 +08:00
    果然猪队友
    Lanke0
        163
    Lanke0  
       2018-08-15 16:01:28 +08:00
    规范确实是需要的,“[]”确实表现出这个后端水平欠缺。

    至于那些使劲批评楼主的,你说别人不会沟通,那对应的,你也不会沟通呀,你到底看不看得清事情的本质呢,最后的解决方案却还是在激化矛盾,你又算什么?

    人要有自知自明
    cenxun
        164
    cenxun  
       2018-08-15 16:01:46 +08:00
    ```
    <?php

    echo json_encode(['address' => []]);
    ```
    输出
    `{"address":[]}`
    不是很懂无脑黑的骚操作
    zhzer
        165
    zhzer  
       2018-08-15 16:06:17 +08:00
    楼主:让开,我来写
    xz410236056
        166
    xz410236056  
       2018-08-15 16:06:18 +08:00
    @chniccs PHP 出什么问题我都不觉得奇怪
    cccRaim
        167
    cccRaim  
       2018-08-15 16:16:22 +08:00
    @chniccs 关弱类型语言什么事情。。。肯定是那个后端水平问题,当然 PHP 开发人员平均水平低我不会反对
    zzNucker
        168
    zzNucker  
       2018-08-15 16:18:18 +08:00   ❤️ 1
    block 了一堆傻逼洗地的后端
    nosay
        169
    nosay  
       2018-08-15 16:18:33 +08:00   ❤️ 1
    一提到 php 好多人高潮,贴子中充满了快活的空气。
    zzNucker
        170
    zzNucker  
       2018-08-15 16:18:59 +08:00   ❤️ 1
    还有傻逼说要检验空字符串,惹不起。那我是不是要基本类型全检验一遍。
    shadownet
        171
    shadownet  
       2018-08-15 16:19:44 +08:00 via iPhone
    你要学会填坑 而不是抱怨
    MorningBOBO
        172
    MorningBOBO  
       2018-08-15 16:20:47 +08:00
    @564425833 666 那真的是太秀了
    lllllllllllllll
        173
    lllllllllllllll  
       2018-08-15 16:23:26 +08:00
    这有什么好喷的啊, 两句话协商下不就好了,在论坛喷人也犯不着吧。。
    真想避免沟通 自己学后端 不就行了吗。
    zyxbcde
        174
    zyxbcde  
       2018-08-15 16:26:35 +08:00
    改的太 JSON 了,我觉得喷的没毛病啊
    fansangg
        175
    fansangg  
    OP
       2018-08-15 16:27:23 +08:00
    @lllllllllllllll 小老弟你有认认真真的看我发的什么内容吗?吐槽和喷人这两个概念你是不是混淆了?沟通过后我明确的告诉他 array 就返回 array,还是当着面说的,然后给我来个"[]"你还想我怎么沟通?
    xinzhognyi
        176
    xinzhognyi  
       2018-08-15 16:31:16 +08:00
    @dearpork 没看懂什么问题,git pull 不可以吗?
    xinzhognyi
        177
    xinzhognyi  
       2018-08-15 16:33:38 +08:00
    第一个问题返回空字符串还能理解,可能没查出来直接赋值了
    但第二个有点 low 了吧,返回的还是字符串根本不是数组啊
    第二个根本就是逻辑错误了。除非他是脑子抽了一下写错了。
    visonme
        178
    visonme  
       2018-08-15 16:40:48 +08:00
    用 NULL 代替空数组返回,我能理解,这种形式我们经常用。

    而我特别好奇的是这个空是怎么出来的? 确定是不是手工构造的码?
    nicholastsao
        179
    nicholastsao  
       2018-08-15 16:49:54 +08:00
    队友?虽然我也菜 但我遇到过明明有代码规范不遵守 说就是习惯自己那套的 写的代码跟龙卷风一样
    不过谁都有长有短 多沟通比较好 谁都有被别人鄙视的时候
    siteshen
        180
    siteshen  
       2018-08-15 16:51:01 +08:00   ❤️ 2
    对题主的遭遇深表同情,遇到个不合格的后端。更要感慨一下 V2EX 的氛围,发帖吐槽不合格的队友,居然会被喷出翔。

    数组返回 [] 或者 null 都有一定道理,返回 "" 或 "[]" 就真的匪夷所思了。按这逻辑,数组类型也可能返回 1024, true, false (和 "" 一样同为基本类型),那使用 API 的人岂不是要防天防地防空气了?
    guagusi
        181
    guagusi  
       2018-08-15 17:01:24 +08:00
    目测后端是 PHP,哈哈哈
    FrankFang128
        182
    FrankFang128  
       2018-08-15 17:04:44 +08:00
    傻逼你比想象中多
    FrankFang128
        183
    FrankFang128  
       2018-08-15 17:05:00 +08:00
    蛋疼写错了,是「傻逼比你想象中多」
    cnbattle
        184
    cnbattle  
       2018-08-15 17:05:27 +08:00
    返回"" 不理解, 返回"[]" 到时知道, 挺多 MySQL 存 json 数据的 不够用 text 还是 5.7 后 的 json 数据, 查出来的都是 json 字符串 需要转下,有人就没转, 要么懒 要么就是不想后端再额外的处理, 把压力分到前端
    cnbattle
        185
    cnbattle  
       2018-08-15 17:06:34 +08:00
    @cnbattle 返回"" 不理解, 返回"[]" 到时知道, 挺多 MySQL 存 json 数据的 不管用 text 还是 5.7 后 的 json 存, 查出来的都是 json 字符串 需要转下,有人就没转, 要么懒 要么就是不想后端再额外的处理, 把压力分到前端
    chniccs
        186
    chniccs  
       2018-08-15 17:13:23 +08:00
    @cccRaim 我只说了我做 android,java 是类型强校验(为了说明我为什么也会碰到这种情况),没说关弱语言类型什么事。。。
    irobbin
        187
    irobbin  
       2018-08-15 17:17:00 +08:00
    @miniwade514 这是技术论坛,谈论技术问题,提高下 PHP 后台的开发姿势有问题?
    ala2008
        188
    ala2008  
       2018-08-15 17:18:02 +08:00
    @rockyou12 哈哈,不管数据是什么,有数据就返回数据,比如[{...},{...}] or {...},没有数据有统一返回“”的。。当然不是我设计的
    qf19910623
        189
    qf19910623  
       2018-08-15 17:18:05 +08:00
    @mcluyu 不管数据正不正确,客户端肯定也必须做校验吧,你得把任何外力可能导致崩溃的因素全部扼杀掉,我后端写代码也这样,不能有任何偷懒心理
    Tlin
        190
    Tlin  
       2018-08-15 17:26:49 +08:00
    你的评论怎么这样怪啊?!就只是返回 json 数据给你用就是啊,那些人怎么想的那么复杂。我也是一个做前端的,这种事情很常见,慢慢沟通就好,不过你这个同事也近 30 了,你就跟他好好说吧,也没有什么动气的。
    lshero
        191
    lshero  
       2018-08-15 17:34:48 +08:00
    跳槽到后端输出前愿意做 json schema 校验的公司
    chenyu8674
        192
    chenyu8674  
       2018-08-15 17:36:04 +08:00
    CUDR 就是 21 世纪的流水线,单调的重复性劳动容易使人疲惫,犯这种低级错误并不奇怪
    话说一个简单的数据列表获取接口返回 4 套不同数据结构的见过没,当时不是同事拦着我肯定让后端熊孩子当场学会死字的六种写法
    mcluyu
        193
    mcluyu  
       2018-08-15 17:43:24 +08:00
    @qf19910623 大多数肯定会校验的,但不是“任何”, 有时候只是觉得与其再这样苟延残喘的让它运行着,还不如直接让它崩了,把问题放大暴露出来,还能及时修改。。。
    Zzdex
        194
    Zzdex  
       2018-08-15 17:47:26 +08:00
    通过一个规范问题 就说人家菜,过分了吧
    vjnjc
        195
    vjnjc  
       2018-08-15 17:49:22 +08:00
    @fansangg 哈哈哈老哥同喜。
    我也遇到过空数组给我返回"error"的,哈哈哈哈
    LudwigWS
        196
    LudwigWS  
       2018-08-15 17:51:32 +08:00
    @miniwade514 是啊,都是码农民工
    hourui
        197
    hourui  
       2018-08-15 18:02:40 +08:00
    鲁棒性不够
    ben1024
        198
    ben1024  
       2018-08-15 18:03:45 +08:00
    这锅 PHP 不背,处理 JSON PHP 算是好用的
    hoosin
        199
    hoosin  
       2018-08-15 18:23:30 +08:00
    这样的确不好,但是楼主你也可能不懂后端
    fansangg
        200
    fansangg  
    OP
       2018-08-15 18:36:16 +08:00
    @hoosin JAVA nodejs 我都写过,这和我懂不懂后端有什么关联吗?
    1  2  3  4  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5613 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 06:02 · PVG 14:02 · LAX 22:02 · JFK 01:02
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.