• 请不要在回答技术问题时复制粘贴 AI 生成的内容
HackerPainter
V2EX  ›  程序员

和主管为一个接口输出真吵了一天,搞得都想离职,求怎么破

  •  
  •   HackerPainter · Mar 19, 2019 · 41792 views
    This topic created in 2643 days ago, the information mentioned may be changed or developed.

    主管想用的接口输出

    {
      "status" : "错误码",
      "error" : "错误消息",
      ......
    }
    

    楼主想用的接口输出

    {
      "errorCode": "错误码",
      "errorMsg" : "错误消息",
      ......
    }
    

    我在想一个接口至于争吵一天吗?最后我妥协了,现在感觉好想离职,请问怎么破

    Supplement 1  ·  Mar 20, 2019

    首先非常感谢各位社友的回复和讨论,在看各位社友的评论中学到了很多东西,果然三人行必有我师焉!

    • 社区有些社友可能认为这种接口争吵没啥意义,随便定义一个就行,但如果这个接口被几千人使用甚至被几万人使用,那就得对这个接口好好设计了。如果连自己都对自己提供的接口不保持敬畏,那就别指望用户对你提供的接口保持敬畏,对于用户的抱怨牢骚那只能全部接下。过去几年里很多用户对我们提供的接口出现过各种各样的抱怨(每个用户都有一套自己心目中的接口,就像社区内留言出现很多接口定义),如果接口提供方的接口与接口使用方心目中的接口不一样就会出现或多或少有抱怨和吐槽。为了尽量让用户用的爽,减少用户的抱怨,所以就和主管对接口进行了争吵(善意的争吵),至于想离职是其它方面的原因;

    • 有些社友可能认为和主管争吵不太好,主管想做成什么样自己就做成什么样。但你真认为这种状态好吗?即使你照做了,你觉得主管认可你吗?在互联网环境下,得多与主管、同事讨论讨论问题,有些难解的问题就是在讨论中产出解决方案的。过去几年和主管同事争吵过无数次甚至拍桌子,差点打起来,但这种都是idea的碰撞,只有碰撞中才能产出好的idea,其实碰撞完后同事主管都会私下交流这个都是各自想法,不代表其他含义,不要往心里去。对于主管要你做啥你就做啥,那主管招你有何用,主管可以招任何一个人来替换你,这样你的自身竞争力在哪里。一个程序员要往高处发展,要学会自己去发现问题去解决问题,而不是等待主管安排问题,比如主管交给你一个手工线上部署任务(需要经常部署),结果你每次都可以手工无故障的部署完成,但这种结果是主管希望的吗,主管再找一个人也可以无故障的手工部署,但如果你把手工线上部署做成自动化工具一键部署,可以节约时间且无风险,这样在主管看来你就是不可替代,能自己对问题提出解决方案;

    • 程序之美应该包含编程之美、接口之美和测试之美。如果有一段程序编程无规范、接口随便定义,无单测和功能测试,让你去接手这段代码,你会怎么想?所以还是对接口保持敬畏之心,多花点时间定义接口,少花点时间答疑和听用户的抱怨;

    下面各出了很多社友的接口定义,可以供借鉴,排名不分先后,可以投票😄

    {
        "code": "错误码",
        "message": "错误消息"
    }
    
    {
        "errno" : "错误码",
        "message" : "错误消息"
    }
    
    {
        "status": "错误码",
        "error": "错误消息"
    }
    
    {
        "status": "错误码",
        "msg": "错误消息"
    }
    
    {
        "errKey": "错误码",
        "errMsg": "错误消息"
    }
    
    {
        "status": "错误码",
        "error": "错误消息",
        "errorCode": "错误码",
        "errorMsg": "错误消息"
    }
    
    {
        "statusCode": "错误码",
        "statusMsg": "错误消息"
    }
    
    {
        "error_code": "错误码",
        "error_msg": "错误消息"
    }
    
    436 replies    2020-12-01 11:05:06 +08:00
    1  2  3  4  5  
    jon
        201
    jon  
       Mar 19, 2019
    主管那个设计更好把,你这个有点冗余,要是没有错误码呢,而且状态不能算错误的也不能算正确的情况怎么办
    lastpass
        202
    lastpass  
       Mar 19, 2019
    作为一名前端后端都要自己写的全干。
    表示我想用啥就用啥。
    {
    error:"error"//错误时存在
    success:"success"//正确时存在
    msg:......
    data:......
    }
    不接受任何反驳。
    因为只有我一个人干。
    没有人反驳我。
    spoony
        203
    spoony  
       Mar 19, 2019 via iPhone   ❤️ 2
    都怪袁隆平系列
    king2014
        204
    king2014  
       Mar 19, 2019
    要么是主管太软在你们公司没地位,要么就是楼主情商低自以为是,就这种事情能争论一天,最后还来 V2EX 发个贴求安慰?
    amon
        205
    amon  
       Mar 19, 2019   ❤️ 1
    @gtanyin 看了全贴,最惨的还是你。
    mesg,搜狗提示:么事干。
    bzj
        206
    bzj  
       Mar 19, 2019
    情商低没前途
    fy
        207
    fy  
       Mar 19, 2019
    code msg data 了解一下!
    loading
        208
    loading  
       Mar 19, 2019 via Android
    额,我支持主管。
    loading
        209
    loading  
       Mar 19, 2019 via Android
    @fy 我目前就是与你这个类似。
    xiaowoniu
        210
    xiaowoniu  
       Mar 19, 2019
    主管的建议好点
    notreami
        211
    notreami  
       Mar 19, 2019
    这有啥好争论的,两种方式都很差。
    基于一般接口请求 90%以上应该是正确请求返回,
    那么正确请求返回的数据,error 填啥? errorCode 填啥? errorMsg 填啥?填了又有啥用?

    基于接口返回正确数据,调用方一般不会关注 error 信息,
    那么这种每次请求都要带着好几个无用字符的接口,浪费用户流量,浪费公司流量,拖慢互联网,你们心里过意的去嘛?
    karnaugh
        212
    karnaugh  
       Mar 19, 2019
    感觉莫名其妙,多关注一些真正有意义的玩意不行么,这玩意都放在这个位置了还能有什么歧义么

    真要说的话,你们主管那个比你的少 8 个字符,少用了点流量,这倒是挺有意义的
    ghos
        213
    ghos  
       Mar 19, 2019
    来看看我们公司的
    {code: 200, msg: "操作成功", serverTime: "1552960256560", data: {…}, success: true}
    suisuipingan
        214
    suisuipingan  
       Mar 19, 2019
    看成想离婚,吓我一跳
    Tink
        215
    Tink  
    PRO
       Mar 19, 2019
    "errno" : "错误码",
    "message" : "错误消息",
    busfool
        216
    busfool  
       Mar 19, 2019 via Android
    虽然较真精神值得鼓励,但是我还是想说一句,听领导的,领导说怎么做就怎么做,当然指的是工作上。只要不违法,不损害你身心健康,听领导的。
    meepo3927
        217
    meepo3927  
       Mar 19, 2019
    别吵了,用这个吧:

    {
    “ code": 11,
    "msg": "fuck it."
    }
    cmonkey
        218
    cmonkey  
       Mar 19, 2019   ❤️ 2
    坚决辞职,连换回码都不听你的,这届主管不行
    rming
        219
    rming  
       Mar 19, 2019
    主管定的是『规则』,你的是改进『建议』。
    主管可以接受或者不接受,因为『规则』可能是适用于多个组员、多个项目组的,而你的建议可能仅适用于你自己,或者部分成员,主管有责任像你解释为什么这样设计,也有权利不接受你的建议。
    从代码的角度说好与不好,很简单区分,但是从做事的角度分析,可能主管考虑的影响因素会比你更多,因此,你有权利提出建议,但是当主管不接受建议时,不要太较真,因为你认为不恰当的方案,从其他人的角度去看,也有可能是最优解。
    rming
        220
    rming  
       Mar 19, 2019
    btw. 都叫主管了,人家说了还不算么?
    xfriday
        221
    xfriday  
       Mar 19, 2019
    你们公司真闲,有这功夫还不去解决实际问题
    zcljy
        222
    zcljy  
       Mar 19, 2019
    听我的直接{code:200,msg:真香}
    darkjoker
        223
    darkjoker  
       Mar 19, 2019
    建议楼主离职吧,其他问题还是会吵的。
    night98
        224
    night98  
       Mar 19, 2019
    {
    code:200
    msg:""
    data:xxx
    }

    and
    {
    code:400
    msg:"用户名或密码错误"
    data:
    }
    hideonwhere
        225
    hideonwhere  
       Mar 19, 2019
    @HackerPainter 0 代表成功 其他代表错误 错误分别对应各自代码
    LemonCoo1
        226
    LemonCoo1  
       Mar 19, 2019
    亲亲,这边建议您赶紧离职呢
    madao
        227
    madao  
       Mar 19, 2019   ❤️ 1
    @HackerPainter 典型的「自行车棚顶」问题,你可以了解下这个著名的邮件: https://shed.bike/。

    另外主管的方案更优,作为前端你如果真不喜欢,你可以把接口自己实现一个中转接口的服务变成你希望的样子。
    j717273419
        228
    j717273419  
       Mar 19, 2019
    主管想用的接口输出

    {
    "status" : "错误码",
    "error" : "错误消息",
    ......
    }
    楼主想用的接口输出

    {
    "errorCode": "错误码",
    "errorMsg" : "错误消息",
    ......
    }

    ==============正确答案来了==============
    {
    "错误码": "12345",
    "错误消息" : "争论超时",
    ......
    }
    hahasong
        229
    hahasong  
       Mar 19, 2019   ❤️ 1
    code msg data 标准答案。我不是针对楼主,我是说你们两个的答案都是辣鸡
    keepfun
        230
    keepfun  
       Mar 19, 2019
    支持主管,这很简单的事情,争吵一天,真怀疑你们的办事能力和效率
    tao1991123
        231
    tao1991123  
       Mar 19, 2019
    闲得蛋疼
    holy_sin
        232
    holy_sin  
       Mar 19, 2019
    status, msg
    seaguest
        233
    seaguest  
       Mar 19, 2019
    我觉的要么

    ```
    {
    "code": 0,
    "message": "success"
    }
    ```
    或者

    ```
    {
    "err_code": 0,
    "err_msg": "success"
    }

    ```
    都可以,用 status 字段容易和 http 的状态码混淆,这里返回的 code 应该是业务逻辑的代码。

    以前使用第二种,现在公司的规范是第一个,觉得都可以。
    frozenway
        234
    frozenway  
       Mar 19, 2019
    {

    "jie_kou_cuo_wu_dai_ma" : 123,
    "jie_kou_cuo_wu_xin_xi": sdhdhdh

    }
    2805408253
        235
    2805408253  
       Mar 19, 2019
    {
    "code":
    "msg"
    "result"
    }
    myalexu
        236
    myalexu  
       Mar 19, 2019
    :)不是技术问题,是权力问题
    summic
        237
    summic  
       Mar 19, 2019   ❤️ 2
    楼主发了三个帖子

    有两个提到想离职

    两次时间间隔一年

    不知道是一直没有痛下决心,

    还是在新公司又想离职了
    0Zed
        238
    0Zed  
       Mar 19, 2019
    “吔屎啦,梁非凡” 画面感。最后怕不是也要 “对不起,非凡哥”
    oIMOo
        239
    oIMOo  
       Mar 19, 2019
    exit(1)
    stevenhawking
        240
    stevenhawking  
       Mar 19, 2019
    Yaun Loungping: The bigest mistake i made is that feed you guys too full.
    cyl2dora
        241
    cyl2dora  
       Mar 19, 2019
    就这单 P 事也要争论么
    geelaw
        242
    geelaw  
       Mar 19, 2019 via iPhone
    @Vegetable #145 所以你还是停留在字面理解咯🙄

    从历史惯用法的角度来说:传统的 POSIX 用 errno 存放错误代码,0 表示没有错误; Win32 的错误代码中 ERROR_SUCCESS 表示没有错误。

    遇到和想像含义不符的词汇时第一步是查询它(在这个上下文)的定义,这是任何受过形式化逻辑训练的人需要遵守的第一个规则,例如数学上的“极限”与它作为“限度”的含义完全不同。

    另外,我并不反对用 status code 表达同一个意思,不过并没有哪个更好的说法。同样的方式,还可以 argue status code 包含“状态”的含义,但不是所有情况都应该用“状态”来表达。但无论如何,先去寻找定义(也就是查看文档)才是正确的。
    Eiden
        243
    Eiden  
       Mar 19, 2019 via Android
    楼主说得对,我建议楼主锤爆主管狗头然后离职
    hoyixi
        244
    hoyixi  
       Mar 19, 2019
    蛋疼,至于吗。

    只要需求明确,文档定死了就行。

    最恐怖得是:今天领导想这个格式,明天领导又想那个格式。 你具体干活的,这才叫痛苦。

    如果管事儿的头头,习惯拍板定好,求之不得。
    fakeshadow
        245
    fakeshadow  
       Mar 19, 2019
    你也是说了至于吵一天么?所以至于为了这个离职么?
    mogita
        246
    mogita  
       Mar 19, 2019
    下面上场的是摸鱼比赛男子双摸的某 IT 公司代表队。
    sun1991
        247
    sun1991  
       Mar 19, 2019
    @raysonx
    There are only two hard things in Computer Science: cache invalidation and naming things, and off by 1 error.
    -- Phil Karlton

    抱歉, 忍不住╮( ̄▽ ̄")╭
    sannyzeng
        248
    sannyzeng  
       Mar 19, 2019
    我喜欢用
    {
    errNo:0,
    errMsg:"",
    data:xxxxxx
    }
    yhxx
        249
    yhxx  
       Mar 19, 2019
    @keepeye 强行反驳,成功不能用 0,随便用 1、200 之类的都行,就是不能用 0,总有后端分不清 0 和"0"
    catalina
        250
    catalina  
       Mar 19, 2019 via Android
    这个能吵一天?!
    Azmaveth
        251
    Azmaveth  
       Mar 19, 2019
    作为产品狗来发言
    {
    "code" : "状态码",
    "msg" : "状态消息",
    ......
    }
    mysunshinedreams
        252
    mysunshinedreams  
       Mar 19, 2019
    正常相应不配拥有 code ?
    JR1024
        253
    JR1024  
       Mar 19, 2019
    {
    "rs_code" : "状态码",
    "rs_msg" : "消息",
    ......
    }
    cai314494687
        254
    cai314494687  
       Mar 19, 2019
    我们是

    {
    "code" : "错误码",
    "message" : "错误消息",
    ......
    }
    iyangyuan
        255
    iyangyuan  
       Mar 19, 2019
    {
    "status": 0, //非 0 表示业务异常。
    "errmsg": "", //异常时的提示信息;正常时可省略。
    "data": {} //业务数据;异常时可省略;正常时一定为对象,不可以直接返回列表(`"data": []`的形式无法扩展)。
    }
    xiaowangge
        256
    xiaowangge  
       Mar 19, 2019
    看我司的返回:

    private Byte ret;
    private Object data;
    private String msg;
    appmanagecluster
        257
    appmanagecluster  
       Mar 19, 2019
    闲着多刷刷论坛不好吗
    Vegetable
        258
    Vegetable  
       Mar 19, 2019
    @geelaw 谈历史合适吗?还是因为没有规则所以会出现莫名奇妙的历史包袱.errcode:0 和 exit(1)这种设计,设计的时候可没考虑人能不能看懂.9102 年了,还要这样吗
    wangxiaoaer
        259
    wangxiaoaer  
       Mar 19, 2019 via Android
    @keepeye 哈哈,跟我们在用的一模一样
    CodeCore
        260
    CodeCore  
       Mar 19, 2019
    code:
    msg:
    data:
    多好....你们俩真是又菜又闲, 还自以为是.......你们这公司危险了....
    mandy0119
        261
    mandy0119  
       Mar 19, 2019
    我觉得 技术而言 两者差距不大,哪个方案好其他人已经说了很多了。
    工作上,是你的问题,既然他是主管,在这种无伤大雅的小地方,顺从他的意见是一个职业素养的问题吧。如果以后你是主管,你要求用 errorCode,下属非要用 status, 你会有啥感觉呢~~~花了一天的时候已经耽误了不少工作了吧,还是你们工作很清闲啊。。。
    他的问题在于管理有问题,为啥这种小事下属会跟他吵一天。。。
    S9Yh4wIFsBG7jnE4
        262
    S9Yh4wIFsBG7jnE4  
       Mar 19, 2019
    袁隆平:还是让你们吃的太饱了.jpg
    silvernoo
        263
    silvernoo  
       Mar 19, 2019   ❤️ 1
    建议离职
    zw1027
        264
    zw1027  
       Mar 19, 2019
    code msg data

    学到咯...
    Sapp
        265
    Sapp  
       Mar 19, 2019   ❤️ 2
    离职吧,别浪费公司钱了
    xiwangzishi
        266
    xiwangzishi  
       Mar 19, 2019   ❤️ 1
    亲,这边建议你立即离职哟。
    Felldeadbird
        267
    Felldeadbird  
       Mar 19, 2019
    楼主血气方刚啊,工作很多时候都会遇到这种不爽的,但是谁发钱给你的。你记住就行了。那,还争什么。工作就是服从啊。
    MrStark
        268
    MrStark  
       Mar 19, 2019
    code 不一定是错误码的,有些特殊的状态码也可以放这个字段的嘛,所以你这个 errorCode 还真不行。
    ```
    {
    "code" : "",
    "message" : "",
    "data" : {}
    }
    ```
    简单直接
    sheny
        269
    sheny  
       Mar 19, 2019
    msg。。。多写几个字母不行嘛,不能想当然一看到就知道是 message 呀。不然我也缩写 localDescription localDp
    sumu
        270
    sumu  
       Mar 19, 2019
    这个主管也太失败了。如果换作是我,这种小事才不会关注,但如果关注到了,那你直接执行就是了,有异议可以提出来,但没有原则性问题,请按我得来,为这点小事争吵?秒开你。
    这个开发也太失败了。此处与程序逻辑毫无关系,只是仁者见仁的事情,如果很关心,只能说明自己没能力看到 big piciture,那作为一个程序员,能力天花板之低,也是可以预期的。为一点破事与 leader 争吵,说明做人也够呛。double 失败啊
    vtoee
        271
    vtoee  
       Mar 19, 2019
    @lastpass 厉害的全栈
    Jaycee
        272
    Jaycee  
       Mar 19, 2019
    主管没魄力,定好了执行就行。
    cpdyj0
        273
    cpdyj0  
       Mar 19, 2019
    我也提一个:
    {
    "result": "ErrorCode|ErrMsg"
    }
    [手动狗头]
    cnbobolee
        274
    cnbobolee  
       Mar 19, 2019
    这都可以吵架,你们公司比较闲。
    Rect
        275
    Rect  
       Mar 19, 2019
    @tabris17 errno 是啥...
    CodeCore
        276
    CodeCore  
       Mar 19, 2019
    @Rect error number 缩写, POSIX 接口错误码就是这个.
    https://en.wikipedia.org/wiki/Errno.h
    ykswang
        277
    ykswang  
       Mar 19, 2019
    key 索引带大小写的都是没有踩过坑
    zhea55
        278
    zhea55  
       Mar 19, 2019   ❤️ 1
    刚看了 github

    成功直接返回结果。

    失败 用 http code 响应。 方便多了


    各位公司都是微软 google 吗,需要像 windows 操作系统一样,搞那么多状态吗?

    是有一个表,可以查每个 code 的含义吗?


    什么东西都没有,就喜欢造轮子,业务冗余化,复杂化



    显示自己多么牛 b。
    tabris17
        279
    tabris17  
       Mar 19, 2019
    @Rect error number 的缩写。C 语言标准库里有个 errno.h
    liuxu
        280
    liuxu  
       Mar 19, 2019
    我司:

    {
    "status" : "状态码",
    "message" : "英文解释",
    "chinese_message" : "中文解释",
    "data" : 额外数据,

    }
    edk24
        281
    edk24  
       Mar 19, 2019
    我个人更倾向于
    ```
    {
    "code": 200,
    "msg": "操作成功",
    ...
    }
    ```
    或者
    ```
    {
    "status": 200,
    "msg": "操作成功",
    ...
    }
    ```

    简洁又直观, 让项目任何接口都必须**至少**带"code/status". 定死一个**状态码**而不是错误才出现的**错误码**.

    至少抓包的很多接口是这么干的. 又便于和前端对接. 否则你这个**错误码**会让前端多出一个可以忽略的`if isset`操作
    karllynn
        282
    karllynn  
       Mar 19, 2019
    @zhea55 你写过代码么。。业务错误你不给错误码,前端怎么根据错误提示用户?
    lepig
        283
    lepig  
       Mar 19, 2019
    要是我 我就这样
    ```json
    {
    "code": "ooo",
    "error": "xxx"
    }
    ```
    zhea55
        284
    zhea55  
       Mar 19, 2019   ❤️ 1
    @karllynn 哎, 是不是非要我说

    一些人对 http 协议,http 状态一无所知,

    然后开始自己造轮子,自己搞状态


    没有这种 sb 响应,就不能提示用户了吗?


    再说了,做后端开发,应该把精力放在尽力解决所有 bug,以及服务的可用状态。

    而不是提前设计好 error 状态,随时准备给用户甩锅



    请问一句,用户看到你的错误,是什么心情?
    lepig
        285
    lepig  
       Mar 19, 2019
    我以前也喜欢搞这种所谓是 code,近几年不怎么用了。因为开始结合用 http status_code,如果错误 直接报提示文案就好了。


    搞那么多 errorcode 谁认识呢? 还得去字典里找文案 受罪
    feikeq
        286
    feikeq  
       Mar 19, 2019
    我也选第一种,其实这没什么好争的.....
    我的接口平常都这样设计,error 直接返回错误信息,不用那个什么代码,还要专门解释错误代码是什么意思...

    {
    "meta": {
    "error": "This username already exists (这个用户名已经存在)",
    "msg": "Request was successful (请求成功)"
    },
    "data": "数据"
    }
    ryanking8215
        287
    ryanking8215  
       Mar 19, 2019
    2 种都不用,http code 200 返回正常响应数据
    {
    "data": ...
    }

    遇到错误了,http code 要么 4xx, 要么 5xx,此时返回错误对象
    {
    "errno": xxx,
    "errmsg": "xxx"
    }
    liu19931020
        288
    liu19931020  
       Mar 19, 2019
    主观的更抽象一点,但感觉没有抽象好,我认为名称不应该和具体内容耦合
    AngryMagikarp
        289
    AngryMagikarp  
       Mar 19, 2019
    @feikeq 你们直接把“ This username already exists (这个用户名已经存在)”这样的字符串报给用户?另外如果客户端要做国际化多语言怎么办。
    leexy
        290
    leexy  
       Mar 19, 2019
    你还敢上 v2 来发帖 你走吧 明天别来上班了
    binaryify
        291
    binaryify  
       Mar 19, 2019
    一般不是返回 {code:"0",msg:"xxx"} 吗
    liuguang
        292
    liuguang  
       Mar 19, 2019
    @keepeye 英雄所见略同
    cuzfinal
        293
    cuzfinal  
       Mar 19, 2019
    好,你走吧
    PhpBestRubbish
        294
    PhpBestRubbish  
       Mar 19, 2019
    我要是主管,我会让你走,这种事情能和主管吵一天
    mgso
        295
    mgso  
       Mar 19, 2019 via iPhone
    你离职吧
    kaedea
        296
    kaedea  
       Mar 19, 2019 via Android
    restful 标准了解一下
    elepant
        297
    elepant  
       Mar 19, 2019
    为这种事吵一天?😂
    tyrealgray
        298
    tyrealgray  
       Mar 19, 2019
    status 不是 http 的状态码吗?这个字段应该预留吧
    25H
        299
    25H  
       Mar 19, 2019
    我觉得这样更好😁

    ```json
    {
    "Code": "错误码",
    "Msg" : "错误消息",
    ......
    }
    ```
    xcFelix
        300
    xcFelix  
       Mar 19, 2019
    你离职吧!
    主管太仁慈了 不要再祸害公司了
    1  2  3  4  5  
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1097 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 205ms · UTC 23:43 · PVG 07:43 · LAX 16:43 · JFK 19:43
    ♥ Do have faith in what you're doing.