主管想用的接口输出
{ "status" : "错误码", "error" : "错误消息", ...... }
楼主想用的接口输出
{ "errorCode": "错误码", "errorMsg" : "错误消息", ...... }
我在想一个接口至于争吵一天吗?最后我妥协了,现在感觉好想离职,请问怎么破
首先非常感谢各位社友的回复和讨论,在看各位社友的评论中学到了很多东西,果然三人行必有我师焉!
社区有些社友可能认为这种接口争吵没啥意义,随便定义一个就行,但如果这个接口被几千人使用甚至被几万人使用,那就得对这个接口好好设计了。如果连自己都对自己提供的接口不保持敬畏,那就别指望用户对你提供的接口保持敬畏,对于用户的抱怨牢骚那只能全部接下。过去几年里很多用户对我们提供的接口出现过各种各样的抱怨(每个用户都有一套自己心目中的接口,就像社区内留言出现很多接口定义),如果接口提供方的接口与接口使用方心目中的接口不一样就会出现或多或少有抱怨和吐槽。为了尽量让用户用的爽,减少用户的抱怨,所以就和主管对接口进行了争吵(善意的争吵),至于想离职是其它方面的原因;
有些社友可能认为和主管争吵不太好,主管想做成什么样自己就做成什么样。但你真认为这种状态好吗?即使你照做了,你觉得主管认可你吗?在互联网环境下,得多与主管、同事讨论讨论问题,有些难解的问题就是在讨论中产出解决方案的。过去几年和主管同事争吵过无数次甚至拍桌子,差点打起来,但这种都是idea的碰撞,只有碰撞中才能产出好的idea,其实碰撞完后同事主管都会私下交流这个都是各自想法,不代表其他含义,不要往心里去。对于主管要你做啥你就做啥,那主管招你有何用,主管可以招任何一个人来替换你,这样你的自身竞争力在哪里。一个程序员要往高处发展,要学会自己去发现问题去解决问题,而不是等待主管安排问题,比如主管交给你一个手工线上部署任务(需要经常部署),结果你每次都可以手工无故障的部署完成,但这种结果是主管希望的吗,主管再找一个人也可以无故障的手工部署,但如果你把手工线上部署做成自动化工具一键部署,可以节约时间且无风险,这样在主管看来你就是不可替代,能自己对问题提出解决方案;
程序之美应该包含编程之美、接口之美和测试之美。如果有一段程序编程无规范、接口随便定义,无单测和功能测试,让你去接手这段代码,你会怎么想?所以还是对接口保持敬畏之心,多花点时间定义接口,少花点时间答疑和听用户的抱怨;
下面各出了很多社友的接口定义,可以供借鉴,排名不分先后,可以投票
{ "code": "错误码", "message": "错误消息" }
{ "errno" : "错误码", "message" : "错误消息" }
{ "status": "错误码", "error": "错误消息" }
{ "status": "错误码", "msg": "错误消息" }
{ "errKey": "错误码", "errMsg": "错误消息" }
{ "status": "错误码", "error": "错误消息", "errorCode": "错误码", "errorMsg": "错误消息" }
{ "statusCode": "错误码", "statusMsg": "错误消息" }
{ "error_code": "错误码", "error_msg": "错误消息" }
1 Jonz 2019-03-19 11:12:29 +08:00 ![]() 主管设计的好像没问题把 |
2 struggle001 2019-03-19 11:12:53 +08:00 你做的对,你主管有强迫症,直接怼他。 |
3 way2create 2019-03-19 11:12:57 +08:00 emmm |
4 muchewu 2019-03-19 11:13:29 +08:00 emmmmm,我得都行 |
5 mydns 2019-03-19 11:13:45 +08:00 ![]() 我是主管 我选第一种 |
6 bzzhou 2019-03-19 11:14:04 +08:00 ![]() 1. 是否是现在规范就是这样定义的,如果是,那么这个是你的问题。 2. 为了这个小问题,都可以争吵一天,说明你们两沟通存在严重问题 |
![]() | 7 e32e32edsfs 2019-03-19 11:14:40 +08:00 ![]() 就这都能吵一天,工作量不饱和啊。。 |
9 HackerPainter OP @mydns 为啥第一种?对外输出的接口谁知道 status 是代表错误码 |
![]() | 10 ericguo 2019-03-19 11:15:04 +08:00 蛋疼 |
![]() | 11 sunyang 2019-03-19 11:15:12 +08:00 via iPhone ![]() 我觉得都行,但是主管说话要不好使的话,为啥起早贪黑想当主管? |
12 helionzzz 2019-03-19 11:15:45 +08:00 你们公司是不是很闲天天没事做啊。。。 |
![]() | 13 raysonx 2019-03-19 11:16:09 +08:00 ![]() There are only two hard things in Computer Science: cache invalidation and naming things. -- Phil Karlton |
14 Banxiaozhuan 2019-03-19 11:16:29 +08:00 我觉得你们两个都有问题,这种东西都能吵到要离职。。。 朋友,喝杯咖啡,去看场电影。 回来再看,怎么最有利与双方就怎么用。 |
![]() | 15 AngryMagikarp 2019-03-19 11:16:32 +08:00 其实这个无所谓,不知道你们要争吵什么。不过我个人倾向第一种,第一种返回的是状态码,第二种返回的是错误码。 |
![]() | 16 tabris17 2019-03-19 11:17:14 +08:00 ![]() 都让开,听我的 { "errno" : "错误码", "message" : "错误消息", } |
![]() | 17 fe619742721 2019-03-19 11:17:49 +08:00 status 状态码也没啥问题,200 的情况下 也放在 errorCode 里吗? 这种问题都能吵一天。。。 |
![]() | 18 tabris17 2019-0319 11:18:04 +08:00 这都能吵起来,说明你们工作不饱和啊 |
![]() | 19 luo123qiu 2019-03-19 11:18:28 +08:00 离职吧,我感觉你这公司离倒闭不远了~ |
![]() | 20 AndOne 2019-03-19 11:18:42 +08:00 via Android @HackerPainter 他是主管 |
21 ccoming 2019-03-19 11:18:44 +08:00 ![]() 想问问 lz,成功的话,有没返回码?有的话,是不是又得另写一遍? |
22 CFO 2019-03-19 11:19:08 +08:00 via Android ![]() 好好好 你说存 json 就存 json 吧 |
![]() | 24 pepesii 2019-03-19 11:20:12 +08:00 这都能吵起来,看来你们是真的闲啊 |
![]() | 25 taresky 2019-03-19 11:20:22 +08:00 ![]() “(我)和主管为一个接口输出真吵了一天。” “我在想一个接口至于争吵一天吗?” 话是你说的,事也是你干出来的。。。你说怪谁咯 |
![]() | 26 woodensail 2019-03-19 11:20:46 +08:00 ![]() status 没问题,0 表示正常,非 0 错误。符合从 c 以来的一贯传统 |
![]() | 27 zhuangzhuang1988 2019-03-19 11:21:26 +08:00 这不简单 用 { "status" : "错误码", "error-msg" : "错误消息", ...... } |
![]() | 28 keepeye 2019-03-19 11:21:32 +08:00 ![]() { "code": 错误码(0 表示成功), "message": 错误消息, "data": 数据对象 } 不接受反驳 |
![]() | 29 tabris17 2019-03-19 11:21:46 +08:00 ![]() 不过就事论事啊,如果这个返回是一般结果,而不是错误结果,那我还是支持 LZ 的方案。 如果调用结果完全正确,返回一个 errorCode 岂不是滑稽 |
30 HackerPainter OP @AngryMagikarp 输出是错误码,不是状态码 |
31 shihty5 2019-03-19 11:22:11 +08:00 看你们怎么定义这两个字段了。 是只处理错误信息? 还是包括成功,处理中等所有状态? 这两点的不一致是争吵的缘由吧? |
32 loveour 2019-03-19 11:22:43 +08:00 不懂为什么这个都能炒一天,也不懂为什么这种事情会被楼主认为涉及正确与否来否定主管的决定。 |
33 ershisi 2019-03-19 11:22:50 +08:00 7 楼和 28 楼说的对。 |
34 HackerPainter OP @shihty5 只处理错误信息 |
![]() | 35 sonyxperia 2019-03-19 11:23:37 +08:00 这都能吵?????? 恕我直言 |
36 bikingtarzan 2019-03-19 11:23:40 +08:00 via Android 如果没报错,状态码好像要再写一套 |
![]() | 37 shakaraka PRO { 'content': ..., 'status': true || false, 'code': 400500, 'message': 'server error' } 这样的话如果业务 code 是错误的话,提取 message 里面的东西就好了,如果你写了 errorMsg 如果请求正确回复,那么后台提示信息你不还是要用 msg 或者 message ? 就按这个格式回复就行了,根据需要取值 |
38 HackerPainter OP @keepeye 挺好的 |
![]() | 39 daiyuok 2019-03-19 11:25:13 +08:00 { "status" : "错误码", "error" : "错误消息", ...... } 1、正常来说,我也会选择第一种,status 可以作为错误码,也可以作为 200 正确码,如果你设置成 errorCode 正确码怎么标识! 2、如果为了这个都能吵一顿,我觉得是闲的.2 个人沟通交流都存在问题,各打五十大板. |
![]() | 40 stanley0black 2019-03-19 11:26:18 +08:00 via iPhone { status:”状态码”, msg:”错误信息” } |
![]() | 41 x86 2019-03-19 11:26:22 +08:00 { "status" : "错误码", "msg" : "错误消息", } |
![]() | 42 mscststs 2019-03-19 11:26:41 +08:00 你可以封装一下,把 status 和 error 转换成你想要的 errcode ……这样心理上应该会好受一点 |
![]() | 43 dishonest 2019-03-19 11:27:43 +08:00 { "error No.": 1, "Full error messages": "xxx" } 建议用这个 |
44 zxcvsh 2019-03-19 11:27:57 +08:00 via iPhone 这也能吵起来... 那种昨天给你提需求隔天告诉你可以取消的... |
![]() | 45 vovov 2019-03-19 11:28:54 +08:00 via Android 我是主管我说了算 |
![]() | 46 Kinnice 2019-03-19 11:28:57 +08:00 via Android 我也提一个 error |
![]() | 47 BCy66drFCvk1Ou87 2019-03-19 11:29:45 +08:00 via Android 不行了笑喷 |
48 WhiteSaber 2019-03-19 11:30:33 +08:00 ![]() { "success": true, "errorInfo": "", "errorInfoDTO": { "updateResultDTO": { "successful": false, "validationErrors": null } }, "data": { } } //我司的坑爹封装 |
![]() | 49 awesomes 2019-03-19 11:30:36 +08:00 ![]() 因为不管接口报错还是不报错 status 都能表示 , 而你的 errorCode 只能表示错误码,所以 status: 200 表示正确 status: 其它表示错误 建议楼主多找找自己的原因 |
50 darknoll 2019-03-19 11:30:54 +08:00 我一切都听领导的 你这主管太弱了,管不住人啊 |
51 jhsea3do 2019-03-19 11:31:27 +08:00 讨厌驼峰 |
![]() | 52 yimity 2019-03-19 11:31:56 +08:00 这都能吵一天,真的是工作不饱和。 我选第一种。因为会往 http status code 上靠,然后再加业务的 code。所以应该是状态,而不是错误,或者你说只有错误的时候才有 code ? |
53 SimbaPeng 2019-03-19 11:32:06 +08:00 主管要统一规范有毛病吗? |
54 hodur 2019-03-19 11:32:10 +08:00 我觉得主管的相对好一点,因为返回结果不一定只有错误,如果还有其他状态,难道要增加一个 otherCode ? |
![]() | 55 Hoshinokozo 2019-03-19 11:33:22 +08:00 闲得慌,只要文档写好了,接口随他怎么定,爱咋定咋定,但是文档必须的得我写清楚 |
![]() | 56 Hoshinokozo 2019-03-19 11:34:09 +08:00 @Hoshinokozo 文档必须得给我写清楚 |
57 dnsaq 2019-03-19 11:34:57 +08:00 via iPhone 我选第一种 |
![]() | 58 Shook 2019-03-19 11:35:06 +08:00 code: "0"', message: "", ... |
![]() | 59 welkinzh 2019-03-19 11:37:16 +08:00 我选 code 和 msg |
![]() | 60 10Buns 2019-03-19 11:37:31 +08:00 真悠闲 |
![]() | 61 tabris17 2019-03-19 11:39:30 +08:00 真要严谨: 如果返回成功: {status: 'success', payload: {.....}} 如果返回失败: {status: 'error', payload: { errno: errno, 'message': 'error description' }} 不过我更倾向用 HTTP Status Code 来返回执行状态 |
![]() | 62 glaucus 2019-03-19 11:39:34 +08:00 via iPhone 额......这个又没有谁对谁错,定一个标准不就好了? |
![]() | 63 geelaw 2019-03-19 11:41:03 +08:00 via iPhone 所以“至于吗”楼主? 另外说 error code 不能表示成功的情况的……只能说还处于字面理解的阶段。错误代码包含成功的代码。 |
![]() | 64 exceloo 2019-03-19 11:41:05 +08:00 楼上还真闲得慌讨论哪个好。 这里的关键难道不是这种无关紧要的字段名,楼主也要怼自己主管,楼主是不是情商不够?就算你离职了,换家公司,不符合你的代码风格你也要提离职? |
65 gtanyin 2019-03-19 11:41:26 +08:00 ![]() 看看我司的 { "code" : "错误码", "mesg" : "错误消息", } 你们听过 mesg 吗?? |
![]() | 66 icyalala 2019-03-19 11:41:40 +08:00 按这种性格来说,不论楼主离不离职,只要楼主还没成为主管,都会再次遇到这种问题。。 |
67 yuandfish 2019-03-19 11:43:20 +08:00 如果这个接口只输出错误结果,那么"errorCode"的确比"status"合适。想到我之前也跟主管因为一些细节争吵过,尽管不认同他的做法,最终还是不得不妥协,现在,准备离职中 |
68 SeaRecluse 2019-03-19 11:47:05 +08:00 { "errKey" : "错误码", "errMsg" : "错误消息", } |
70 ly4572615 2019-03-19 11:47:46 +08:00 你主管好歹给你定规范,我这里主管天天玩游戏,项目我说了算 |
71 ukyoo 2019-03-19 11:48:02 +08:00 dto 一下 |
![]() | 72 gamexg 2019-03-19 11:48:13 +08:00 这个简单,你给他这样返回就好: { "status" : "错误码", "error" : "错误消息", "errorCode": "错误码", "errorMsg" : "错误消息", ...... } |
73 HackerPainter OP @ly4572615 多好,想怎么干就怎么干 |
![]() | 74 wolfie 2019-03-19 11:50:07 +08:00 { "status": "状态码", "errorCode": "错误码", "msg/errorMsg": "错误信息" } |
![]() | 75 pmispig 2019-03-19 11:51:36 +08:00 有必要吗,大哥说咋弄就咋弄 |
![]() | 76 coosir 2019-03-19 11:52:08 +08:00 ![]() { "code" : "状态码", "msg" : "消息", "data" : "数据" } 别吵! 其实公司内部统一就好,这有什么好吵的,要自己做主先自己努力当领导 |
![]() | 77 baicheng10 2019-03-19 11:53:29 +08:00 算了算了,折中一下吧: { "statusCode" : "状态 /错误码", "statusMsg" : "状态 /错误消息", ...... } ![]() |
![]() | 78 kakudesu 2019-03-19 11:54:57 +08:00 ![]() 要不大家各让一步,这样来定义: { "cuowudaima" : "错误码", "cuowuxinxi" : "错误消息", ...... } ![]() |
79 jxl 2019-03-19 11:55:39 +08:00 { "code":状态码, "msg": "状态信息", "data": 数据 } 作为通用接口数据结构的话,不应该只有 error 信息的吧 也可以是操作成功之类的啊 |
![]() | 80 xiwangzishi 2019-03-19 11:55:52 +08:00 ``` { "code":0, "msg":"消息", "data":"数据" } ``` |
81 newmind 2019-03-19 11:55:58 +08:00 via Android 同楼上,用的 code,msg,data,简洁明了,不过楼主和主管的都没问题啊 |
![]() | 82 southsala 2019-03-19 11:56:20 +08:00 对接过两位数公司的接口,基本每家都不一样,听你主管的吧,除非你当主管,计较这个没有意义。我这样不接受任何反驳。 { "success": false, "msg": "系统错误", "code": 1002 } |
![]() | 83 kamal 2019-03-19 11:56:53 +08:00 @gamexg #68 { "status" : "错误码", "error" : "错误消息", "errorCode": "错误码", "errorMsg" : "错误消息", "errorcode": "错误码", "errormsg" : "错误消息", data:{} } |
![]() | 84 shiguiyou 2019-03-19 11:57:05 +08:00 ![]() 两个人都有问题。我要是主管,直接回一句,爱写写,不爱写我重新找个人。如果我是 lz,直接写,哪来那么多问题。 |
![]() | 85 sanqian 2019-03-19 11:58:13 +08:00 - -我这用这个 { "code": "错误码", "msg": "错误消息", } |
![]() | 86 index90 2019-03-19 11:58:27 +08:00 code 或者 number,是用来给研发用的,根据错误码反查常量表,再搜索到错误代码行。 msg 或者 errorMsg,都是用来给调用方看的,例如给前端研发看,好让他们在不看代码的时候知道是什么错,例如少传了参数什么的,msg 我一般在接口层编写,与业务有关。 如果是我设计,就是 code 和 message 两个字段,这样定义使用场景更广。和你主管的设计差不多,正如楼上有人说了,如果正常返回,难道也要用 errorMsg ?不知道楼主坚持自己的设计是出于什么原因。 第二,因为这些小事争吵,技术人员里面很常见,这也是我很讨厌做技术的原因之一,总是为这些无聊的事情争吵。例如争论哪个语言好,都是屁股决定脑袋,研发人员更甚,研发人员的脑袋基本是贴在了自己的屁股上,写个代码还要写出优越感。 |
![]() | 87 reus 2019-03-19 11:59:06 +08:00 根本不是技术问题,而是权力斗争,类似皇权和相权的斗争。技术来看,两种都没什么区别。但是你可能觉得主管插手这种具体命名,不给你控制权,所以不爽吧,谁知道以后还会插手哪些事情呢。主管可能也觉得连命名一个 api 返回字段的权力都没有,很没面子吧。他不插手,或者你没所谓,就平安无事的。 赶紧走啊,连这点事情都能吵起来,遇到更大的设计选择,还不得闹翻天。 主管要么定好规范,大家遵守,要么不定规范,让大家自由发挥,自己不定规范,要靠吵架,无能。当然你这种死杠最后还妥协的,除了浪费大家的工作时间也没有其他用途了。 |
![]() | 88 sazn 2019-03-19 11:59:12 +08:00 ![]() 主管很有想法啊 无论表达意思的广度,还是 json 长度,都是主管的占优耶 |
89 dark3212 2019-03-19 12:01:26 +08:00 个人猜想: 一开始是因为懒得改和强迫症吵起来了,双方互不妥协,越吵越厉害。 到后面已经不是懒得改和强迫症的问题了,已经是面子问题,但是显然你没你主管面子大,你感觉受到了侮辱,所以想离职。 所以这种小破事一开始就改了就行了,不就啥事没有了吗? |
90 lihongjie0209 2019-03-19 12:01:51 +08:00 闲的蛋疼 |
91 method 2019-03-19 12:02:23 +08:00 via iPhone 主管的设计没啥问题啊 |
92 lzhCoooder 2019-03-19 12:03:07 +08:00 { "error_code": "错误码", "error_msg" : "错误消息", ...... } |
93 fox0001 2019-03-19 12:08:11 +08:00 via Android 楼上的真闲…这种情况应该找架构师决定 |
95 zwh2698 2019-03-19 12:09:06 +08:00 via Android 赞成你主管,你的定义没有弹性。数据结构设计需要保持一点弹性。这个就是经验。这种问题没有对错,不是一加一等于 3 就错了,你的可能也满足现状。但是弹性粒度不够。如果你一味强调自己的反而丢失聆听的能力。你说呢 |
![]() | 96 watzds 2019-03-19 12:09:14 +08:00 via Android 主管的好 |
![]() | 97 ranwu 2019-03-19 12:09:19 +08:00 看一下 github 的 api 是怎么设计的 |
![]() | 98 whoisghost 2019-03-19 12:09:26 +08:00 根据你后面的评论,从技术上来说。你的接口是对的。从人方面来说,如果你一开始把情况说清楚,就没那么多人在技术上批判你了,你表达能力有点差。 你主管有点伪洁癖,为简洁而简洁。 |
99 fox0001 2019-03-19 12:09:54 +08:00 via Android 其实,HTTP 标准也是用 status 代表状态码 /错误码 |
100 yingfengi 2019-03-19 12:11:43 +08:00 via Android 憋吵了,听我的,输出√和 |