1 Totato5749 2016-11-18 11:16:01 +08:00 后端是 java 写的话,序列化一个 bean 对象一般就不去修剪了吧 我猜是这样的 |
![]() | 2 justfindu 2016-11-18 11:18:09 +08:00 那其他人用你接口时候还得注意, 这个接口有没有 msg 有没有 data , 你自己写的时候还要区分 data 要不要 msg 要不要? 不嫌麻烦? |
![]() | 3 beneo 2016-11-18 11:22:30 +08:00 简单来说, http response code 不能完全的满足业务需求,也就是业务上的 error code 不能完全的映射到 http response code 上面,所以索性,全部返回 200 ,靠里面的 error code 来区分 |
4 Jakesoft 2016-11-18 11:45:32 +08:00 我是有的,{"code":0,"status":1,"data":[{object},{object},{object}],"message":"ok"}, 或者 {"code":2333,"status":0,"data":[],"message":"fail"}, 这样统一设计挺好的,可以通用, 并且 status 不使用字符串,比如"success"/"fail",也不使用 boolean , |
![]() | 5 SoloCompany 2016-11-18 12:07:54 +08:00 10+年前定的协议 {“ code ”:” 233 ”,” var ”:{…}} 到现在都没有改过 为了适应业务的复杂性, code 是 string 类型而不是 int 当然 10+年前的 json 还没这么流行,所以其实是 <object><string name=“ code ”>233</string><object name=“ var ”>...</object></object> |
![]() | 6 wesley 2016-11-18 13:00:41 +08:00 层错误用 http status code , 比如验证失败, Token 过期,没有权限等 业务部分用业务系统自己定义的 code ,此时 http status 为 200 |
![]() | 7 garrydzeng 2016-11-18 13:27:40 +08:00 如果是使用 HTTP 协议,这样做没有任何优势。 |
![]() | 8 mornlight 2016-11-18 13:59:15 +08:00 这么几个字节节省了没有啥意义,统一更重要 |
9 icris 2016-11-18 14:47:23 +08:00 省掉一个空的 msg 字段对 java 这样的强类型语言没有影响,大部分反序列化工具都能正确赋上默认值(手动取值本来就要处理异常),但 js 会从 null 变成 undefined , python ( json.loads())会有一个 KeyError |
![]() | 10 hekunhotmail 2016-11-18 15:49:36 +08:00 这种接口返回统一很重要 |
![]() | 11 MajorAdam 2016-11-19 10:45:16 +08:00 via Android 统一很重要! |
![]() | 12 Miy4mori 2016-11-19 23:29:53 +08:00 via Android 你是没用 java 之类的对接过各种反人类系统吧,娘的每个接口一套结构,还得专门写个 bean 反序列化话,最坑的是无法直接获得业务状态,还得先反序列化成 map ,看有没有 error ,没有的话再用 bean 反序列化,一不小心就反序列化异常,简直想骂人……… |
13 godsoul 2020-05-04 18:26:54 +08:00 我同事也觉得完全没必要有 data,最主要是大厂 google 支付宝 微信 华为 等等接口,字段都是直接和 code msg 平级的,并不固定报在 data 里面 |