top错误诊断简要说明
错误处理流程概览
从这个错误处理流程可知,在整个错误处理的过程中,一共能够分为3条要 紧的流程:请求解析特殊流程处理,平台级错误处理与业务调用错误处理《当然, 这一切处理的最初也是最重要的一步就是:将服务器响应内容保留下来。
二、 服务器响应内容透析
服务器响应内容,顾名思义就是isv调用top服务得到的响应的内容。这些 内容能够最真实的反应出isv请求的问题与服务器当前的情况,也最能够帮助isv 到问题的所在。
服务器响应内容通常分为两种:一种是Wiki文档中所编写的成功调用所返回 的字段,另一种是调用失败的返回的错误有关信息。
1.调用成功返回格式
调用成功的响应信息内容根据调用服务版本的不一致分为了两种不一致的 格式。
Lo的服务返回信息的格式分为三层:最外一层是“rsp“:{}标记,表示这是服 务的响应内容;中间一层是返回结构体的标记,如:返回的是商品的结构体,中 间这层就是“items“:[{},{}……],表示结果是一个商品的列表,假如返回参数不是 以结构体的形式,这一层就不存在;最内一层就是每个结构体具体的字段了。1.0 这个版本所有返回结果,不论是单个的商品还是一个商品列表,他的第二层都是 一个列表的结构,区别只是列表里有一个子结构体还是有多个子结构体而已。
相比之下,2.0的服务返回信息就相对的规范化了。2.0的响应内容要紧也能 够分为3层:最外一层是你调用服务的名称所对应的响应标记,如I获取单个商 品()的响应最外层为”item_get_response":{},表示这是获取单 个商品的响应;中间一层是返回结构体的标记。假如结构体是单个,那么2.0返 回的这一层里面就会是单个的结构,如:获取的单个商品的结构体就是“ 反之,假如结构体是多个,那么列表也会明显的表示出来,如:搜索商品列表的 结构体就会是〃items〃:{"item〃:[{},{} ]}。最外层的items表示这是一个商品的
列表,后面的item交易时间字符串是什么表示列表中的每一个子结构体都是属于商品item的,然后就 跟着商品的数据;最内一层就商品的具体字段信息了。
2.调用错误返回
响应码分五种类型,由它们的第一位数字表示: ixx:信息,请求收到,继续处理
2xx:成功,行为被成功地同意、懂得与采纳
3xx:重定向,为了完成请求,务必进一步执行的动作
4xx:客户端错误,请求包含语法错误或者者请求无法实现
5xx:服务器错误,服务器不能实现一种明显无效的请求
2)服务端错误总述
1.0的错误响应信息最外层为{"error」SP〃:{}},表示这是调用错误所返回的信 息。里面一层包含两个元素:〃Code〃:〃〃与"msg”",前者表示错误码是多少, 后者表示错误信息是什么。比如错误的调用1.0的服务错误时返 回的错误信息:
{"error_rsp":{"code":40z"msg":"Missing required arguments:missing parameter iid∕numjid',}}o
这个信i的开头为errojrsp,表示这是调用错误所返回的结果。里面包含的错误 体的Code为40,是平台型错误,表示错误是缺少了必传参数所引起的。岁后 msg 内容为 Missing required arguments:missing parameter iid/numjid, 表示缺少 的必传参数是iid或者者numjido Isv解析到这些信息后就需要短据错误信息改 进自己传入的参数来使调用血功。
2.0的错误响应信息的最外层为{"eιτC)JreSPOnSe表示这是调用服务失 败所返回的错误信息。信息体里面一层总羹包含了五个元素:
"args":{"arg":[{wkey//://V/value/7:w 〃},{"key":" ","value":" 〃},{“key":" ","value":" "}・・・ …]}, "code":"", "msg":"", 〃SUb_code":" 〃与〃sub_msg〃:〃“。args 表示用户传入 的参数列表是什么,里面是一个arg的列表会包含沌户传入的所有参数信息,每 个arg表示一个参数的信息,key表示参数的名称,VaIUe表示参数的内容,用以 方便用户定位自己的错误;Code表示用户调用错误的错误码是多少,小于200 表示平台级错误,200-1000之间表示大范围的业务错误,即哪一类型的api调用 发生了错误(根据api的大类来分,如:商品类的api是530,交易类的api是 520,等);msg表示大类型的错误码所对应的错误信息,通常不具备独立的debug 作用,需要与sub_code与sub_msg 一起使用才行;sub_code是调用错误的子错
误码,他表示用户调用错误的原因;sub_msg是子错误病所对应的错误信息,他 用来补充细化子错误码的错误原因的。由如调用2.0的服务错误 时返回的错误信息:
{,,error-response,,r{,,args^{,,arg^[{,'key^',app-key^,^alue,,ι,,15739,,}z{,,key'∖,,fields'7, value"ι"listjimezdelist,timezapprove-status"}z{',key"r"format"z"value"ι"json"}z{"key" ∕,method^',value,'ι',,'}4',∣<ey,'ι,'nick,'z,'value,,ι,,tbtest561',H,,key,,r,'part nerJd,√,value,'ι"TOPTEST,"},{"key"∕,sign"z"value"ι"668FB4A049F71AlC845EF8C05Bl F3E66"},{,,key"∕'timestamp"z"value"ι"2010-03-05
18ι03ι06.325,,}z{,,key,,ιπv"zπvalue"r"2.0"}]},"code"530,"msg"ι"Remote service error"∕,sub-code"ι,,missing-parameter,,z"sub-msg"ι,,iid 与 numjid 至少要传入一个 "})
这个信息的开头为errojresponse,表示这是调用错误所返回的错误信息。里面 的args列出了用调用这个接口传入的信息有:
[{,,key,,∕,app-key,,∕'value,,ι',15739,,}z{',key,,∕,fields,7,value',ι"listjime,delist-timezapp rove-status"}z{"key"ι"format"z"value"ι"json"},{"key"ι"method,√,value"ι"taobao.item .get"L{',key"r"ni
ck","value"ι*,tbtest561"}z{,,key"ι"partnerJd"z"value',ι"TOPTEST,,}z{"ke
y"ι,,sign'√'value,^"668FB4A049F71AlC845EF8C05BlF3E66"},{"key"ι"timestamp"z"val ue":"2010-03-05 18ι03ι06.325"},{"key"ι"v'√'value"ι"2.0"}],这些信息是从用户的请 求信息里面解析出来的。错误码code为530,表示这是调用商品的api所产生的 错误。错误信息msg为Remote service error表示这是调用业务处理所产生的错 误。子错误码SUb_code为:missing-parameter,表示这个错误是由于缺少了参数 所产生的。子错误信息SUb_msg为:iid与numjid至少要传入一个,表示少传 的参数为iid或者numjido这所有的错误信息叠加起来能够明白,这个错误是用 户调用接口时业务处理发现用户没有传入商品id所导致的。
3)平台解析错误
平台解析错误是指top返回的错误码小于100的情况。平台解析是非业务性 的普适的校验接入层,要紧用于对用户的各类权限、与入参进行最基本的校验。 现在的平台错误码要紧有:
ISV能够通过错误码与解释来纠正问题。如:错误码为3的响应表示图片上传失 败,错误码
为26表示用户没有传入SeSSion参数,错误码为27表示用户传入的 session参数不到对应的SeSSiOn记录,等等。
4)业务处理错误
业务处理错误是用户通过平台校验进入业务流程出现了错误所发出来的。这 一层的错误码根据调用版本不一致分为两种。假如版本是1.0,那么返回的错误 信息格式就是:{"error」SP〃:{“code〃:XXX,……〃}},里面的code是数字形 式的标记着一种错误标码,msg是字符串形式,标记在错误的具体信息。如, 获取当商品失败的错误信息就是:{”eiror_rsp":{“code”:551Jmsg":“ltem service UnaVailable:获取单个商品失败“}}。1.0的错误码有下列几种:
1.0的返回的错误code就是其中的错误码,错误msg就是其中的英文错误描述 加上具体的错误信息构成的。
假如版本是2.0,那么服务器所返回的错误信息格式就是:
{//error_response,/:{,,args":{"arg":[{//ke//://w/,value",:,/ "},{"keyV' ","value":" "},{"key" VaIUe
]},"code"' '∕msg"' 〃,〃sub_code〃:〃 SUb〃}},里面的
code是数字形式的标记着一种业务类型的错误编码,msg贝丁是比较大范围内的 表示错误类型的字符串。而subcode是以字符串形式粗略表示错误的类型, sub_msg则是表示具体的错误原因。2.0的COde包含下列几种分类:
产品线 | 错误码 |
用户 | 500 |
类目 | 510 |
交易 | 520 |
退款 | 521 |
商品 | 530 |
商品扩展API | 531 |
邮费模板 | 532 |
产品 | 540 |
物流 | 550 |
店铺 | 560 |
评价 | 570 |
淘宝客 | 580 |
系统 | 590 |
备案 | 591 |
增量API | 600 |
比价 | 610 |
画报 | 620 |
江湖 | 630 |
分销 | 640 |
淘秀 | 650 |
收费 | 660 |
MiSC(保证金等杂项api) | 670 |
由上图可知,每一大类的api在2.0中事实上是共享一个code的,它能让用户在 复杂组合调用中指导是哪一类的api出现了问题,实现初步的定位。
2.0的业务错误中,msg里面最容易出现的内容就是Remote service error,这 表示用户是在通
过了平台校验后进行业务流程的时候出现的错误。其他的错误还 有RemOteSerViCeTimeOUt:后台处理业务超时等等的错误。这一个错误信息的 力度比较粗,很难单独用她进行错误处理。2.0的业务处理错误信息要紧要看 sub_code与sub_msg这连个字段。sub_code表示了服务费对业务错误的分类, sub_msg表示了是错误原因。
Sub/ode根据业务错误类型要紧能够分为如卜几类
子错误码 | 错误归类 |
user-not-exist | 用户不存在 |
missing-parameter | 缺少参数 |
invalid-parameter | 参数错误 |
parameters-mismatch | 参数不匹配(要紧针对那些需要一一对应的入 参) |
Invalid-permission | 权限不足 |
remote-service-error | 调用后端服务错误 |
remote-service-timeout | 调用后端服务超时 |
remote-connection-error | 调用后端服务连接错误 |
XXX-service-unavailable | 调用后端服务失败 |
item-extra-not-exist | 商品扩展信息不存在 |
trade-not-exist | 交易记录不存在 |
refund-not-exist | 退款记录不存在 |
每一类的子错误码代表着某一类西 | 2的错误,比如user-not-exist表示用户传入的 |
nick或者者用户绑定的session所对应的nick不到对应的用户记录, Invalid-permission表示用户由于权限问题不能进行某些操作。sub_code给予isv 或者用户以改进错误的方向,而SUb_msg则告诉用户改进点。比如SUb_code为 invalid-parameter, SUb_msg为用户传入的iid不能超过40个,这就表示着,这 次错误的原因是用户版的参数iid由于数量超过40个而产生了错误。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论