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

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

  •  
  •   HackerPainter · 2019-03-19 11:10:18 +08:00 · 36583 次点击
    这是一个创建于 1858 天前的主题,其中的信息可能已经有所发展或是发生改变。

    主管想用的接口输出

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

    楼主想用的接口输出

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

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

    第 1 条附言  ·  2019-03-20 21:47:08 +08:00

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

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

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

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

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

    {
        "code": "错误码",
        "message": "错误消息"
    }
    
    {
        "errno" : "错误码",
        "message" : "错误消息"
    }
    
    {
        "status": "错误码",
        "error": "错误消息"
    }
    
    {
        "status": "错误码",
        "msg": "错误消息"
    }
    
    {
        "errKey": "错误码",
        "errMsg": "错误消息"
    }
    
    {
        "status": "错误码",
        "error": "错误消息",
        "errorCode": "错误码",
        "errorMsg": "错误消息"
    }
    
    {
        "statusCode": "错误码",
        "statusMsg": "错误消息"
    }
    
    {
        "error_code": "错误码",
        "error_msg": "错误消息"
    }
    
    436 条回复    2020-12-01 11:05:06 +08:00
    1  2  3  4  5  
    XuanYuan
        301
    XuanYuan  
       2019-03-19 19:15:50 +08:00
    @yiyi11 #107 你这个不全,完整版应该是这样:

    喜欢就买,不行就分,多喝开水,重启试试。
    lincanbin
        302
    lincanbin  
       2019-03-19 19:19:40 +08:00
    还是工作不饱和
    jxgccaaron
        303
    jxgccaaron  
       2019-03-19 19:21:59 +08:00 via iPhone
    { "errors":"错误消息";}
    就这样,完了
    code 按 restful 来
    mostkia
        304
    mostkia  
       2019-03-19 19:23:33 +08:00
    {"code":"200","msg":"........",......}这样可能比较好
    一般没必要强调错误参数,返回的什么可能性都有,唯独错误率应该是低的,这是上线的接口的基本功。
    所以在很少有错误发生的情况下,为其专门准备一个返回值位置,可能就有些多余,而且也不能从中反推出其他的可能状态,因为总会有其它的状态出现。
    还有啊,每个人的想法都是不同的,在公司里面的话,就不能意气用事了,主管怎么说你就怎么做呗。做出来的东西又不是你自己的。不必纠结那么多,大家都是混口饭吃,都留一些情面嘛,好说话一些。
    srx1982
        305
    srx1982  
       2019-03-19 19:27:57 +08:00
    code, msg 就完了,越少越好
    这个真的不值得吵
    srx1982
        306
    srx1982  
       2019-03-19 19:28:50 +08:00
    @fox0001 通用的 404 之类的还好说,有的时候根本不够用或者找不到合适的,还是要加个 status 之类的字段来判断到底什么错
    zhuchaowe
        307
    zhuchaowe  
       2019-03-19 19:32:38 +08:00 via iPhone
    @keepeye 看了一圈 这个方案我最喜欢 其他方案 看着脑阔疼
    fngtz
        308
    fngtz  
       2019-03-19 19:33:52 +08:00 via iPhone
    @reid2017 一毛一样+1,
    psj1105
        309
    psj1105  
       2019-03-19 19:40:34 +08:00
    这个话题唯一有点价值的就是 V 友们互(各)相(自)学(站)习(队)了
    liubaicai
        310
    liubaicai  
       2019-03-19 20:01:32 +08:00 via Android
    吵架算什么,有本事去尬舞啊
    oxygenliu
        311
    oxygenliu  
       2019-03-19 20:09:15 +08:00 via iPhone
    这也能吵?
    Enochyun
        312
    Enochyun  
       2019-03-19 20:11:15 +08:00
    为这点事情离职 不值得
    simonv3ex
        313
    simonv3ex  
       2019-03-19 20:27:33 +08:00
    我听说过有公司吵架的罚 2 个人牵手一下午的,好像在 b 站上看到的来着[滑稽]
    zhuzhibin
        314
    zhuzhibin  
       2019-03-19 20:30:24 +08:00 via iPhone
    我更想听听楼主以及主管这样设计的各自的理由是什么???
    ZehaiZhang
        315
    ZehaiZhang  
       2019-03-19 20:32:26 +08:00
    ??? 315 楼了,所以为啥吵架?
    pinews
        316
    pinews  
       2019-03-19 20:53:30 +08:00
    在执行成功的时候,楼主的方式缺陷很大,具体事情具体分析,如果不去分析的话,主管的方案更具有普遍性
    pinews
        317
    pinews  
       2019-03-19 21:05:15 +08:00
    @HackerPainter
    主管的方案里 status 只有两种状态,成功和失败,失败了就提示 errmsg 的内容,并不区分具体错误码。
    错误码要来干什么,第一要准确定义错误,防止 msg 歧义,第二归类,错误码很多,第三,程序自动识别。
    你都没说问题的背景是什么,不知道怎么评价。
    exip
        318
    exip  
       2019-03-19 21:09:43 +08:00 via Android
    这个帖子囊括了一天的笑点.哈哈哈
    Gota
        319
    Gota  
       2019-03-19 21:11:47 +08:00
    比较喜欢 GraphQL 的返回格式:

    ``` json
    {
    "data": { ... },
    "errors": [ ... ],
    "extensions": { ... }
    }
    ```
    billlee
        320
    billlee  
       2019-03-19 21:29:50 +08:00
    tourist2018
        321
    tourist2018  
       2019-03-19 21:32:07 +08:00
    看不出这俩有啥区别,命名而已,要是我和别人对接接口,只要数据格式规定好,别的怎样我都没问题

    这也能炒一天 感情公司找你上班这么浪费时间的?
    luckyswag
        322
    luckyswag  
       2019-03-19 21:37:19 +08:00
    同情主管
    sorshion
        323
    sorshion  
       2019-03-19 21:39:45 +08:00
    你们就没考虑到正常业务也需要 message 的嘛
    {
    status:true/false, // true 为正确业务,false 为错误业务
    code: 1000,// 编码
    msg: '' , // 正确时或错误时用户提示信息,与 code 对应,方便做文案映射
    data:{} // 一定要为对象,不能为'',0,null 之类
    }

    -----------------------------
    突然感觉如下的也合适
    {
    code: 200,// 编码(假设 200~299 的为正常)
    msg: '' , // 正确时或错误时用户提示信息,与 code 对应,方便做文案映射
    data:{} // 一定要为对象,不能为'',0,null 之类
    }
    -----------------------------

    上面的感觉又变成了 http_code 了,直接 restful 得了,用 http_code 表示不同状态,code 表示业务状态
    sorshion
        324
    sorshion  
       2019-03-19 21:43:09 +08:00
    @ryanking8215 你的方案比较赞同
    feikeq
        325
    feikeq  
       2019-03-19 21:49:31 +08:00 via iPhone
    @AngryMagikarp 一样可以配置做国际化语言,我现在就是中英双语,枚举想要的本地化语言文件即可
    hanxiV2EX
        326
    hanxiV2EX  
       2019-03-19 22:05:30 +08:00 via Android
    只要有规范文档,用哪种都行!别改来改去就行。这事没必要吵,浪费时间。只要给够钱,用拼音,用中文都行。

    坐等主管来说:我就是那个主管。
    OnionJuice
        327
    OnionJuice  
       2019-03-19 22:06:05 +08:00
    @luckyswag
    +1,主管管不住人,还叫什么主管,变成前后端的传话小弟。

    回楼主
    这种返回格式不是一般都由主管定的吗?恕我直言,如果主管规定
    {
    "1" : "错误码",
    "2" : "错误消息",
    ......
    }
    都可以。
    说实话码农就是写代码的,标准是按照 leader 定的,各自一套这样的代码也是屎。
    tt0411
        328
    tt0411  
       2019-03-19 22:09:47 +08:00
    现在的主管管理要这么精细了? 我们接口都是自己说了算
    16t
        329
    16t  
       2019-03-19 22:21:46 +08:00
    LZ 怕不是直译强迫症吧。。。。。。
    wunonglin
        330
    wunonglin  
       2019-03-19 22:27:13 +08:00
    早上才几个人回复。。。。现在居然能吵 300 多楼?。。也是厉害
    feelinglucky
        331
    feelinglucky  
       2019-03-19 22:40:56 +08:00
    @keepeye 一般我也这样子,不接受任何规劝
    xiaoqi
        332
    xiaoqi  
       2019-03-19 23:06:59 +08:00
    难道不就是定个规范的事情吗?
    iceking
        333
    iceking  
       2019-03-19 23:25:32 +08:00
    "ret", "msg", "data"
    jzmws
        334
    jzmws  
       2019-03-19 23:37:05 +08:00
    这个要看之前是这么定义的 ,要兼容旧的接口
    tiaod
        335
    tiaod  
       2019-03-19 23:40:42 +08:00
    这都能翻 4 页,v2 的程序员也是够闲的
    nodwang
        336
    nodwang  
       2019-03-19 23:49:07 +08:00 via Android
    @tiaod 不瞒您说,我大半夜的翻了 4 页看
    techme
        337
    techme  
       2019-03-19 23:49:13 +08:00
    主管和新来的总监都不会用 git
    代码在一个分支上盖来盖去,心累不想管(=。=)
    qianbiTH
        338
    qianbiTH  
       2019-03-19 23:50:03 +08:00 via Android
    闲的蛋疼,我就要连按 4 下空格,咬我啊
    huangdayu
        339
    huangdayu  
       2019-03-20 00:04:49 +08:00 via Android
    {
    "code":200,
    "msg":"success",
    "decs":"成功",
    "data":"List<Obj>"
    }

    不接受反驳
    crazyjin
        340
    crazyjin  
       2019-03-20 00:09:22 +08:00
    @lincanbin 工作虽然不饱和,但起码人是吃饱了的。。
    ksharp8
        341
    ksharp8  
       2019-03-20 00:29:01 +08:00
    一般用主管那种
    SNOOPY963
        342
    SNOOPY963  
       2019-03-20 00:55:04 +08:00
    让开让开!

    别问!问就是离职!
    xderam
        343
    xderam  
       2019-03-20 01:12:29 +08:00
    感觉看大家讨论也能各种涨知识,如果不讨论楼主和其主管的纷争的话,其实挺好的。
    个人感觉 这玩意应该没有四海统一的标准,楼主尝试下把大家的讨论结果整理下,然后给主管一个建议,他选择哪个就是哪个。然后在论坛里和大家讨论下到底哪个方案更好,单纯和主管讨论多没意思~~~
    cyssxt
        344
    cyssxt  
       2019-03-20 01:21:55 +08:00 via iPhone
    这个怎么吵一天 求教
    BlBana
        345
    BlBana  
       2019-03-20 01:49:04 +08:00 via Android
    有点浪费时间啊 ... 没必要啊
    congeec
        346
    congeec  
       2019-03-20 02:06:27 +08:00
    @gtanyin 哈哈哈哈,dmesg 还是挺好用的
    6260628
        347
    6260628  
       2019-03-20 02:10:21 +08:00
    听主管的,你有本事就坐他的位置,但感觉一两年内不可能
    conge
        348
    conge  
       2019-03-20 02:24:27 +08:00   ❤️ 1
    能为这点儿小事儿吵架
    说明你俩积怨已深。
    Trumeet
        349
    Trumeet  
       2019-03-20 04:56:27 +08:00
    都怪袁隆平?
    Trumeet
        350
    Trumeet  
       2019-03-20 04:56:57 +08:00
    而且这个 Status Code 直接用 HTTP Status 更好吧,没必要扔到 Response body 里
    herexf
        351
    herexf  
       2019-03-20 06:01:19 +08:00 via Android
    一个编程门外汉来说,status 是的状态码,也可以提示错误以外的代码,例如成功和警告,这样不需要额外的定义
    xuanbg
        352
    xuanbg  
       2019-03-20 07:14:16 +08:00
    看到楼主的返回数据格式,就想起被微信支付接口支配的恐惧。。。我都想不明白为啥正确和错误要返回不同的数据格式???我在接到返回数据前,不可能知道结果是正确还是错误阿喂!
    kingsonl
        353
    kingsonl  
       2019-03-20 07:49:37 +08:00 via iPhone
    当然是选择简单明了的 所以第一种 如果是我 code message
    ww2000e
        354
    ww2000e  
       2019-03-20 07:51:45 +08:00 via Android
    就算听你的,最后得到什么呢。。
    ryan18
        355
    ryan18  
       2019-03-20 07:55:55 +08:00 via Android
    真好,又一天摸鱼白拿钱
    kuyuzhiqi
        356
    kuyuzhiqi  
       2019-03-20 08:12:19 +08:00 via iPhone
    支持主管,你的设计字段名太冗余了
    httplife
        357
    httplife  
       2019-03-20 08:13:34 +08:00
    吓得我赶紧看下 api
    {
    "status": 0,
    "error": {
    "code": 0,
    "message": "string",
    "errors": {
    "code": 0,
    "field": "string",
    "description": "string"
    }
    }
    }
    Marmot
        358
    Marmot  
       2019-03-20 09:04:42 +08:00
    @simonv3ex 那不得天天想办法和漂亮妹子吵架
    sarices
        359
    sarices  
       2019-03-20 09:09:45 +08:00
    {
    "错误码: 0
    "错误信息": "lalala"
    }
    iidestiny
        360
    iidestiny  
       2019-03-20 09:10:51 +08:00
    其实哈,你是不想再公司待了,这不是借口吵不吵的问题,你想在公司待这还用问么?当然听主管的,感觉找工作吧。新都不在这儿。
    HackerPainter
        361
    HackerPainter  
    OP
       2019-03-20 09:11:55 +08:00
    @iidestiny 这你都知道?
    guoyuchuan
        362
    guoyuchuan  
       2019-03-20 09:12:27 +08:00
    看不懂这是为什么,难道我的政治觉悟太低了?
    saeed
        363
    saeed  
       2019-03-20 09:23:41 +08:00
    还真看不惯用 错误,成功 状态都放在 errorcode , 别告诉我只有失败的状态才放在 errorcode 其实用啥都行,实现需求就行 就一个字段名的问题吵一天,真是极品
    macszh2013
        364
    macszh2013  
       2019-03-20 09:24:32 +08:00
    你主管是对的
    wxl1380610
        365
    wxl1380610  
       2019-03-20 09:24:51 +08:00
    真闲
    phper69
        367
    phper69  
       2019-03-20 09:31:42 +08:00
    主管跟你吵得不是接口,是权力
    rexyan
        368
    rexyan  
       2019-03-20 09:45:20 +08:00
    建议加上个唯一的 response id
    xinjiang
        369
    xinjiang  
       2019-03-20 09:45:37 +08:00
    先做人,再做技术
    Honwhy
        370
    Honwhy  
       2019-03-20 09:52:08 +08:00
    我的习惯仅供参考
    code 对应编码,不完全是数字,比如 S00,B00,S=System B=Business
    status 类似于 HttpStatus 的语义,用数字描述,
    message, msg, errorMsg, desc,这些都不关键
    wupher
        371
    wupher  
       2019-03-20 09:52:35 +08:00
    为个字段名就争执了一天,如果没有历史或者其它原因,值得吗?
    xinjiang
        372
    xinjiang  
       2019-03-20 09:54:31 +08:00
    你这样的人不该在别人手下做事,应该自己开公司自己干,为了一段代码设计和主管吵一天,真是委屈你了
    jorneyr
        373
    jorneyr  
       2019-03-20 09:56:00 +08:00
    难道你们的接口都是返回错误信息么,字段都是描述错误为主 ^_^
    wmm
        374
    wmm  
       2019-03-20 09:56:35 +08:00
    {
    "code":,
    "msg": "",
    "data": ......
    }
    ayumi043
        375
    ayumi043  
       2019-03-20 09:58:50 +08:00
    服了。两个没本子差别啊,或者有文档说明就 ok 了。这点破事也能吵。
    justin2018
        376
    justin2018  
       2019-03-20 09:59:05 +08:00
    那年在缅甸,因为赌石,我把护照都压上了,结果还是输了。赌石的地方在缅甸诺瓦达卡村,无奈之下我决定铤而走险,越境回国,可惜被缅甸边防军发现,向我开枪扫射,我左脚中弹,一瘸一拐的奔向祖国一步一步的挪,左脚的疼痛让我难以忍受,记得当时身边好多大树我都没扶,就服你 😁

    开个玩笑~~~ 😅
    我老大说啥 我就做啥子~ 😅
    MyFaith
        377
    MyFaith  
       2019-03-20 10:02:25 +08:00
    @tabris17 你这都错别字了
    wyqn
        378
    wyqn  
       2019-03-20 10:11:16 +08:00 via Android
    @yiyi11 吔屎啦!梁非凡?😂
    Maiiiiii
        379
    Maiiiiii  
       2019-03-20 10:11:50 +08:00
    理论上讲,这个对外输出的接口要配文档的,无论哪种方式有文档的话就都不是问题。
    st2udio
        380
    st2udio  
       2019-03-20 10:14:51 +08:00
    @feikeq
    code 是给前端操作的选择,比如我这个错误返回,我前端需要作出一些变化。你直接给个字符串,我用字符串去判断吗?
    RyanOne
        381
    RyanOne  
       2019-03-20 10:18:28 +08:00
    腾讯的某接口 案例
    ```javascript
    {"retCode":"0","retMsg":null,"retObj":true}
    ```
    atonku
        382
    atonku  
       2019-03-20 10:22:10 +08:00
    你自己辞职吧,你定义的这是个鬼哦
    crackhopper
        383
    crackhopper  
       2019-03-20 10:23:14 +08:00
    function beFriendly(leaders_def){
    return {
    errorCode: leaders_def.status,
    errorMsg: leaders_def.error
    }
    }

    一个函数帮你解决分歧,不客气。
    1354219429
        384
    1354219429  
       2019-03-20 10:29:18 +08:00
    好搞笑 这都可以吵架
    zongren
        385
    zongren  
       2019-03-20 10:30:52 +08:00
    还是工作不饱和·
    onepunch
        386
    onepunch  
       2019-03-20 10:33:33 +08:00
    我现在终于理解为什么 go 要求 { 不能另写一行了,因为这些问题,脑浆子都能打出来
    houzhimeng
        387
    houzhimeng  
       2019-03-20 10:35:11 +08:00
    感觉楼主本质上是 diss 主管的技术能力,而不是接口命名
    iv2ex
        388
    iv2ex  
       2019-03-20 10:37:18 +08:00
    支持你离职
    string643
        389
    string643  
       2019-03-20 10:39:02 +08:00
    离职吧。很闲啊,这都能吵起来,以后有的气受,早离早解放😬😬
    yjxkwp
        390
    yjxkwp  
       2019-03-20 10:42:15 +08:00
    别吵了,用
    zhuangtaima 和 xiaoxi 吧
    l00t
        391
    l00t  
       2019-03-20 10:52:26 +08:00
    看了评论我震惊了。用 errorno/errorcode 来表示返回值不是 C 语言开始就有的传统了吗? 怎么表示正确?返回 0 就表示正确啊。这还需要设计两种不同的返回格式?

    只能说时代变化快,遵循传统的做法原本是可以减少沟通成本的,现在反而增加了沟通成本
    publicvoid
        392
    publicvoid  
       2019-03-20 10:55:46 +08:00
    现在的年轻人啊,定个接口都和主管吵还想离职,我们这些老年人,老板说啥就干啥,生怕丢了工作😂
    feikeq
        393
    feikeq  
       2019-03-20 10:57:53 +08:00
    @st2udio 别这么死脑筋兄弟.....
    前端 调取 API 接口时可以指定接口语言呀! 就像微信获取个人资料信息一样,可以指定 language=ZH-CN
    这样返回的性别什么的就是中文..
    fundebug
        394
    fundebug  
       2019-03-20 10:59:14 +08:00
    有毒,这是段子吧...
    nomemo
        395
    nomemo  
       2019-03-20 11:05:09 +08:00
    看了眼觉得你们俩都不咋地,不止是技术上的
    GeruzoniAnsasu
        396
    GeruzoniAnsasu  
       2019-03-20 11:29:00 +08:00
    GeruzoniAnsasu 23 小时 15 分钟前 via Android ♥ 3
    我感觉诸位也能在这个帖子里吵一天。。。



    算应验了吗
    zjyl1994
        397
    zjyl1994  
       2019-03-20 11:43:27 +08:00
    没啥可吵得,他说做啥你做啥就是了。上班就是为了赚钱,没什么忍不了的。
    zichen
        398
    zichen  
       2019-03-20 12:30:35 +08:00
    aws,阿里云之类的都有接口规范文档,看看人家是怎么设计的,参考一下就行了。
    jabin88
        399
    jabin88  
       2019-03-20 12:30:48 +08:00
    {"code":"200","msg":"........",......}这样可能比较好
    公司项目当然是听主管的呀,你是拿钱干活。你自己项目就是随便你自己了
    cexy
        400
    cexy  
       2019-03-20 12:46:37 +08:00
    ------------------翻页标记线-----------------------
    1  2  3  4  5  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3085 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 42ms · UTC 10:59 · PVG 18:59 · LAX 03:59 · JFK 06:59
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.