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

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

  •  
  •   HackerPainter · Mar 19, 2019 · 43648 views
    This topic created in 2790 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  
    ❮ ❯
    Jonz
    Jonz
    Mar 19, 2019❤️2
    1
    主管设计的好像没问题把
    struggle001
    struggle001
    Mar 19, 2019
    2
    你做的对,你主管有强迫症,直接怼他。
    way2create
    way2create
    Mar 19, 2019
    3
    emmm
    muchewu
    muchewu
    Mar 19, 2019
    4
    emmmmm,我覺得都行
    mydns
    mydns
    Mar 19, 2019❤️19
    5
    我是主管 我选第一种
    bzzhou
    bzzhou
    Mar 19, 2019❤️3
    6
    1. 是否是现在规范就是这样定义的,如果是,那么这个是你的问题。
    2. 为了这个小问题,都可以争吵一天,说明你们两沟通存在严重问题
    e32e32edsfs
    e32e32edsfs
    Mar 19, 2019❤️63
    7
    就这都能吵一天,工作量不饱和啊。。
    deng1xia
    deng1xia
    Mar 19, 2019
    8
    @mydns +1
    HackerPainter
    HackerPainter
    OP
    Mar 19, 2019
    9
    @mydns 为啥第一种?对外输出的接口谁知道 status 是代表错误码
    ericguo
    ericguo
    Mar 19, 2019
    10
    蛋疼
    sunyang
    sunyang
    Mar 19, 2019 via iPhone❤️3
    11
    我觉得都行,但是主管说话要不好使的话,为啥起早贪黑想当主管?
    helionzzz
    helionzzz
    Mar 19, 2019
    12
    你们公司是不是很闲天天没事做啊。。。
    raysonx
    raysonx
    Mar 19, 2019❤️2
    13
    There are only two hard things in Computer Science: cache invalidation and naming things.
    -- Phil Karlton
    Banxiaozhuan
    Banxiaozhuan
    Mar 19, 2019
    14
    我觉得你们两个都有问题,这种东西都能吵到要离职。。。
    朋友,喝杯咖啡,去看场电影。 回来再看,怎么最有利与双方就怎么用。
    AngryMagikarp
    AngryMagikarp
    Mar 19, 2019
    15
    其实这个无所谓,不知道你们要争吵什么。不过我个人倾向第一种,第一种返回的是状态码,第二种返回的是错误码。
    tabris17
    tabris17
    Mar 19, 2019❤️5
    16
    都让开,听我的

    {
    "errno" : "错误码",
    "message" : "错误消息",
    }
    fe619742721
    fe619742721
    Mar 19, 2019
    17
    status 状态码也没啥问题,200 的情况下 也放在 errorCode 里吗?
    这种问题都能吵一天。。。
    tabris17
    tabris17
    Mar 19, 2019
    18
    这都能吵起来,说明你们工作不饱和啊
    luo123qiu
    luo123qiu
    Mar 19, 2019
    19
    离职吧,我感觉你这公司离倒闭不远了~
    AndOne
    AndOne
    Mar 19, 2019 via Android
    20
    @HackerPainter 他是主管
    ccoming
    ccoming
    Mar 19, 2019❤️3
    21
    想问问 lz,成功的话,有没返回码?有的话,是不是又得另写一遍?
    CFO
    CFO
    Mar 19, 2019 via Android❤️1
    22
    好好好 你说存 json 就存 json 吧
    ztyMCR
    ztyMCR
    Mar 19, 2019
    23
    @tabris17 丢人
    pepesii
    pepesii
    Mar 19, 2019
    24
    这都能吵起来,看来你们是真的闲啊
    taresky
    taresky
    Mar 19, 2019❤️3
    25
    “(我)和主管为一个接口输出真吵了一天。”

    “我在想一个接口至于争吵一天吗?”

    话是你说的,事也是你干出来的。。。你说怪谁咯
    woodensail
    woodensail
    Mar 19, 2019❤️1
    26
    status 没问题,0 表示正常,非 0 错误。符合从 c 以来的一贯传统
    zhuangzhuang1988
    zhuangzhuang1988
    Mar 19, 2019
    27
    这不简单
    用
    {
    "status" : "错误码",
    "error-msg" : "错误消息",
    ......
    }
    keepeye
    keepeye
    Mar 19, 2019❤️78
    28
    {
    "code": 错误码(0 表示成功),
    "message": 错误消息,
    "data": 数据对象
    }

    不接受反驳
    tabris17
    tabris17
    Mar 19, 2019❤️1
    29
    不过就事论事啊,如果这个返回是一般结果,而不是错误结果,那我还是支持 LZ 的方案。

    如果调用结果完全正确,返回一个 errorCode 岂不是滑稽
    HackerPainter
    HackerPainter
    OP
    Mar 19, 2019
    30
    @AngryMagikarp 输出是错误码,不是状态码
    peterontheway
    peterontheway
    Mar 19, 2019
    31
    看你们怎么定义这两个字段了。
    是只处理错误信息?
    还是包括成功,处理中等所有状态?

    这两点的不一致是争吵的缘由吧?
    loveour
    loveour
    Mar 19, 2019
    32
    不懂为什么这个都能炒一天,也不懂为什么这种事情会被楼主认为涉及正确与否来否定主管的决定。
    ershisi
    ershisi
    Mar 19, 2019
    33
    7 楼和 28 楼说的对。
    HackerPainter
    HackerPainter
    OP
    Mar 19, 2019
    34
    @shihty5 只处理错误信息
    sonyxperia
    sonyxperia
    Mar 19, 2019
    35
    这都能吵??????
    恕我直言
    bikingtarzan
    bikingtarzan
    Mar 19, 2019 via Android
    36
    如果没报错,状态码好像要再写一套
    shakaraka
    shakaraka
    Mar 19, 2019
    37
    {
    'content': ...,
    'status': true || false,
    'code': 400500,
    'message': 'server error'
    }

    这样的话如果业务 code 是错误的话,提取 message 里面的东西就好了,如果你写了 errorMsg 如果请求正确回复,那么后台提示信息你不还是要用 msg 或者 message ?

    就按这个格式回复就行了,根据需要取值
    HackerPainter
    HackerPainter
    OP
    Mar 19, 2019
    38
    @keepeye 挺好的
    daiyuok
    daiyuok
    Mar 19, 2019
    39
    {
    "status" : "错误码",
    "error" : "错误消息",
    ......
    }
    1、正常来说,我也会选择第一种,status 可以作为错误码,也可以作为 200 正确码,如果你设置成 errorCode 正确码怎么标识!
    2、如果为了这个都能吵一顿,我觉得是闲的.2 个人沟通交流都存在问题,各打五十大板.
    stanley0black
    stanley0black
    Mar 19, 2019 via iPhone
    40
    {
    status:”状态码”,
    msg:”错误信息”
    }
    x86
    x86
    Mar 19, 2019
    41
    {
    "status" : "错误码",
    "msg" : "错误消息",
    }
    mscststs
    mscststs
    Mar 19, 2019
    42
    你可以封装一下,把 status 和 error 转换成你想要的 errcode ……这样心理上应该会好受一点
    dishonest
    dishonest
    Mar 19, 2019
    43
    {
    "error No.": 1,
    "Full error messages": "xxx"
    }

    建议用这个
    zxcvsh
    zxcvsh
    Mar 19, 2019 via iPhone
    44
    这也能吵起来...
    那种昨天给你提需求隔天告诉你可以取消的...
    vovov
    vovov
    Mar 19, 2019 via Android
    45
    我是主管我说了算🤔
    Kinnice
    Kinnice
    Mar 19, 2019 via Android
    46
    我也提一个
    error
    BCy66drFCvk1Ou87
    BCy66drFCvk1Ou87
    Mar 19, 2019 via Android
    47
    不行了笑喷
    WhiteSaber
    WhiteSaber
    Mar 19, 2019❤️1
    48
    {
    "success": true,
    "errorInfo": "",
    "errorInfoDTO": {
    "updateResultDTO": {
    "successful": false,
    "validationErrors": null
    }
    },
    "data": {
    }
    }

    //我司的坑爹封装
    awesomes
    awesomes
    Mar 19, 2019❤️1
    49
    因为不管接口报错还是不报错 status 都能表示 , 而你的 errorCode 只能表示错误码,所以

    status: 200 表示正确

    status: 其它表示错误

    建议楼主多找找自己的原因
    darknoll
    darknoll
    Mar 19, 2019
    50
    我一切都听领导的
    你这主管太弱了,管不住人啊
    jhsea3do
    jhsea3do
    Mar 19, 2019
    51
    讨厌驼峰
    yimity
    yimity
    Mar 19, 2019
    52
    这都能吵一天,真的是工作不饱和。
    我选第一种。因为会往 http status code 上靠,然后再加业务的 code。所以应该是状态,而不是错误,或者你说只有错误的时候才有 code ?
    SimbaPeng
    SimbaPeng
    Mar 19, 2019
    53
    主管要统一规范有毛病吗?
    hodur
    hodur
    Mar 19, 2019
    54
    我觉得主管的相对好一点,因为返回结果不一定只有错误,如果还有其他状态,难道要增加一个 otherCode ?
    Hoshinokozo
    Hoshinokozo
    Mar 19, 2019
    55
    闲得慌,只要文档写好了,接口随他怎么定,爱咋定咋定,但是文档必须的得我写清楚
    Hoshinokozo
    Hoshinokozo
    Mar 19, 2019
    56
    @Hoshinokozo 文档必须得给我写清楚
    dnsaq
    dnsaq
    Mar 19, 2019 via iPhone
    57
    我选第一种
    Shook
    Shook
    Mar 19, 2019
    58
    code: "0"',
    message: "",
    ...
    welkinzh
    welkinzh
    Mar 19, 2019
    59
    我选 code 和 msg
    10Buns
    10Buns
    Mar 19, 2019
    60
    真悠闲
    tabris17
    tabris17
    Mar 19, 2019
    61
    真要严谨:

    如果返回成功:
    {status: 'success', payload: {.....}}

    如果返回失败:
    {status: 'error', payload: { errno: errno, 'message': 'error description' }}

    不过我更倾向用 HTTP Status Code 来返回执行状态
    glaucus
    glaucus
    Mar 19, 2019 via iPhone
    62
    额......这个又没有谁对谁错,定一个标准不就好了?
    geelaw
    geelaw
    Mar 19, 2019 via iPhone
    63
    所以“至于吗”楼主?

    另外说 error code 不能表示成功的情况的……只能说还处于字面理解的阶段。错误代码包含成功的代码。
    exceloo
    exceloo
    Mar 19, 2019
    64
    楼上还真闲得慌讨论哪个好。
    这里的关键难道不是这种无关紧要的字段名,楼主也要怼自己主管,楼主是不是情商不够?就算你离职了,换家公司,不符合你的代码风格你也要提离职?
    gtanyin
    gtanyin
    Mar 19, 2019❤️1
    65
    看看我司的
    {
    "code" : "错误码",
    "mesg" : "错误消息",
    }

    你们听过 mesg 吗??
    icyalala
    icyalala
    Mar 19, 2019
    66
    按这种性格来说,不论楼主离不离职,只要楼主还没成为主管,都会再次遇到这种问题。。
    yuandfish
    yuandfish
    Mar 19, 2019
    67
    如果这个接口只输出错误结果,那么"errorCode"的确比"status"合适。想到我之前也跟主管因为一些细节争吵过,尽管不认同他的做法,最终还是不得不妥协,现在,准备离职中
    SeaRecluse
    SeaRecluse
    Mar 19, 2019
    68
    {
    "errKey" : "错误码",
    "errMsg" : "错误消息",
    }
    NotNil1
    NotNil1
    Mar 19, 2019
    69
    @icyalala 成为主管之后,还是会和这样的手下吵个一天的
    ly4572615
    ly4572615
    Mar 19, 2019
    70
    你主管好歹给你定规范,我这里主管天天玩游戏,项目我说了算
    ukyoo
    ukyoo
    Mar 19, 2019
    71
    dto 一下
    gamexg
    gamexg
    Mar 19, 2019
    72
    这个简单,你给他这样返回就好:

    {
    "status" : "错误码",
    "error" : "错误消息",
    "errorCode": "错误码",
    "errorMsg" : "错误消息",
    ......
    }
    HackerPainter
    HackerPainter
    OP
    Mar 19, 2019
    73
    @ly4572615 多好,想怎么干就怎么干
    wolfie
    wolfie
    Mar 19, 2019
    74
    {
    "status": "状态码",
    "errorCode": "错误码",
    "msg/errorMsg": "错误信息"
    }
    pmispig
    pmispig
    Mar 19, 2019
    75
    有必要吗,大哥说咋弄就咋弄
    coosir
    coosir
    Mar 19, 2019❤️1
    76
    {
    "code" : "状态码",
    "msg" : "消息",
    "data" : "数据"
    }

    别吵!
    其实公司内部统一就好,这有什么好吵的,要自己做主先自己努力当领导
    baicheng10
    baicheng10
    Mar 19, 2019
    77
    算了算了,折中一下吧:
    {
    "statusCode" : "状态 /错误码",
    "statusMsg" : "状态 /错误消息",
    ......
    }
    kakudesu
    kakudesu
    Mar 19, 2019❤️4
    78
    要不大家各让一步,这样来定义:
    {
    "cuowudaima" : "错误码",
    "cuowuxinxi" : "错误消息",
    ......
    }
    jxl
    jxl
    Mar 19, 2019
    79
    {
    "code":状态码,
    "msg": "状态信息",
    "data": 数据
    }

    作为通用接口数据结构的话,不应该只有 error 信息的吧 也可以是操作成功之类的啊
    xiwangzishi
    xiwangzishi
    Mar 19, 2019
    80
    ```
    {
    "code":0,
    "msg":"消息",
    "data":"数据"
    }
    ```
    newmind
    newmind
    Mar 19, 2019 via Android
    81
    同楼上,用的 code,msg,data,简洁明了,不过楼主和主管的都没问题啊
    southsala
    southsala
    Mar 19, 2019
    82
    对接过两位数公司的接口,基本每家都不一样,听你主管的吧,除非你当主管,计较这个没有意义。我这样不接受任何反驳。
    {
    "success": false,
    "msg": "系统错误",
    "code": 1002
    }
    kamal
    kamal
    Mar 19, 2019
    83
    @gamexg #68
    {
    "status" : "错误码",
    "error" : "错误消息",
    "errorCode": "错误码",
    "errorMsg" : "错误消息",
    "errorcode": "错误码",
    "errormsg" : "错误消息",
    data:{}
    }
    shidapi
    shidapi
    Mar 19, 2019❤️1
    84
    两个人都有问题。我要是主管,直接回一句,爱写写,不爱写我重新找个人。如果我是 lz,直接写,哪来那么多问题。
    sanqian
    sanqian
    Mar 19, 2019
    85
    - -我这用这个
    {
    "code": "错误码",
    "msg": "错误消息",
    }
    index90
    index90
    Mar 19, 2019
    86
    code 或者 number,是用来给研发用的,根据错误码反查常量表,再搜索到错误代码行。
    msg 或者 errorMsg,都是用来给调用方看的,例如给前端研发看,好让他们在不看代码的时候知道是什么错,例如少传了参数什么的,msg 我一般在接口层编写,与业务有关。

    如果是我设计,就是 code 和 message 两个字段,这样定义使用场景更广。和你主管的设计差不多,正如楼上有人说了,如果正常返回,难道也要用 errorMsg ?不知道楼主坚持自己的设计是出于什么原因。

    第二,因为这些小事争吵,技术人员里面很常见,这也是我很讨厌做技术的原因之一,总是为这些无聊的事情争吵。例如争论哪个语言好,都是屁股决定脑袋,研发人员更甚,研发人员的脑袋基本是贴在了自己的屁股上,写个代码还要写出优越感。
    reus
    reus
    Mar 19, 2019
    87
    根本不是技术问题,而是权力斗争,类似皇权和相权的斗争。技术来看,两种都没什么区别。但是你可能觉得主管插手这种具体命名,不给你控制权,所以不爽吧,谁知道以后还会插手哪些事情呢。主管可能也觉得连命名一个 api 返回字段的权力都没有,很没面子吧。他不插手,或者你没所谓,就平安无事的。

    赶紧走啊,连这点事情都能吵起来,遇到更大的设计选择,还不得闹翻天。

    主管要么定好规范,大家遵守,要么不定规范,让大家自由发挥,自己不定规范,要靠吵架,无能。当然你这种死杠最后还妥协的,除了浪费大家的工作时间也没有其他用途了。
    sazn
    sazn
    Mar 19, 2019❤️1
    88
    主管很有想法啊
    无论表达意思的广度,还是 json 长度,都是主管的占优耶
    dark3212
    dark3212
    Mar 19, 2019
    89
    个人猜想:
    一开始是因为懒得改和强迫症吵起来了,双方互不妥协,越吵越厉害。
    到后面已经不是懒得改和强迫症的问题了,已经是面子问题,但是显然你没你主管面子大,你感觉受到了侮辱,所以想离职。
    所以这种小破事一开始就改了就行了,不就啥事没有了吗?
    lihongjie0209
    lihongjie0209
    Mar 19, 2019
    90
    闲的蛋疼
    method
    method
    Mar 19, 2019 via iPhone
    91
    主管的设计没啥问题啊
    lzhCoooder
    lzhCoooder
    Mar 19, 2019
    92
    {
    "error_code": "错误码",
    "error_msg" : "错误消息",
    ......
    }
    fox0001
    fox0001
    Mar 19, 2019 via Android
    93
    楼上的真闲…这种情况应该找架构师决定
    CSwater
    CSwater
    Mar 19, 2019 via iPhone
    94
    @keepeye #28 反驳!为啥不用 RESTful 呢?
    zwh2698
    zwh2698
    Mar 19, 2019 via Android
    95
    赞成你主管,你的定义没有弹性。数据结构设计需要保持一点弹性。这个就是经验。这种问题没有对错,不是一加一等于 3 就错了,你的可能也满足现状。但是弹性粒度不够。如果你一味强调自己的反而丢失聆听的能力。你说呢
    watzds
    watzds
    Mar 19, 2019 via Android
    96
    主管的好
    ranwu
    ranwu
    Mar 19, 2019
    97
    看一下 github 的 api 是怎么设计的
    whoisghost
    whoisghost
    Mar 19, 2019
    98
    根据你后面的评论,从技术上来说。你的接口是对的。从人方面来说,如果你一开始把情况说清楚,就没那么多人在技术上批判你了,你表达能力有点差。

    你主管有点伪洁癖,为简洁而简洁。
    fox0001
    fox0001
    Mar 19, 2019 via Android
    99
    其实,HTTP 标准也是用 status 代表状态码 /错误码
    yingfengi
    yingfengi
    Mar 19, 2019 via Android
    100
    憋吵了,听我的,输出√和❎
    1  2  3  4  5  
    ❮ ❯
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1856 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 178ms · UTC 07:08 · PVG 15:08 · LAX 23:08 · JFK 02:08
    ♥ Do have faith in what you're doing.