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 里面
|