top錯(cuò)誤診斷簡(jiǎn)要說明_第1頁
top錯(cuò)誤診斷簡(jiǎn)要說明_第2頁
top錯(cuò)誤診斷簡(jiǎn)要說明_第3頁
top錯(cuò)誤診斷簡(jiǎn)要說明_第4頁
top錯(cuò)誤診斷簡(jiǎn)要說明_第5頁
已閱讀5頁,還剩17頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

一、 錯(cuò)誤處理流程概覽從這個(gè)錯(cuò)誤處理流程可知,在整個(gè)錯(cuò)誤處理的過程中,一共可以分為3條主要的流程:請(qǐng)求解析異常流程處理,平臺(tái)級(jí)錯(cuò)誤處理和業(yè)務(wù)調(diào)用錯(cuò)誤處理。當(dāng)然,這一切處理的最初也是最重要的一步就是:將服務(wù)器響應(yīng)內(nèi)容保留下來。二、 服務(wù)器響應(yīng)內(nèi)容透析服務(wù)器響應(yīng)內(nèi)容,顧名思義就是isv調(diào)用top服務(wù)得到的響應(yīng)的內(nèi)容。這些內(nèi)容能夠最真實(shí)的反應(yīng)出isv請(qǐng)求的問題和服務(wù)器當(dāng)前的情況,也最能夠幫助isv找到問題的所在。服務(wù)器響應(yīng)內(nèi)容一般分為兩種:一種是wiki文檔中所編寫的成功調(diào)用所返回的字段,另一種是調(diào)用失敗的返回的錯(cuò)誤相關(guān)信息。1. 調(diào)用成功返回格式調(diào)用成功的響應(yīng)信息內(nèi)容根據(jù)調(diào)用服務(wù)版本的不同分為了兩種不同的格式。1.0的服務(wù)返回信息的格式分為三層:最外一層是rsp: 標(biāo)記,表示這是服務(wù)的響應(yīng)內(nèi)容;中間一層是返回結(jié)構(gòu)體的標(biāo)記,如:返回的是商品的結(jié)構(gòu)體,中間這層就是items: , ,表示結(jié)果是一個(gè)商品的列表,如果返回參數(shù)不是以結(jié)構(gòu)體的形式,這一層就不存在;最內(nèi)一層就是每個(gè)結(jié)構(gòu)體具體的字段了。1.0這個(gè)版本所有返回結(jié)果,不論是單個(gè)的商品還是一個(gè)商品列表,他的第二層都是一個(gè)列表的結(jié)構(gòu),區(qū)別只是列表里有一個(gè)子結(jié)構(gòu)體還是有多個(gè)子結(jié)構(gòu)體而已。相比之下,2.0的服務(wù)返回信息就相對(duì)的規(guī)范化了。2.0的響應(yīng)內(nèi)容主要也可以分為3層:最外一層是你調(diào)用服務(wù)的名稱所對(duì)應(yīng)的響應(yīng)標(biāo)記,如:獲取單個(gè)商品(taobao.item.get)的響應(yīng)最外層為item_get_response: ,表示這是獲取單個(gè)商品的響應(yīng);中間一層是返回結(jié)構(gòu)體的標(biāo)記。如果結(jié)構(gòu)體是單個(gè),那么2.0返回的這一層里面就會(huì)是單個(gè)的結(jié)構(gòu),如:獲取的單個(gè)商品的結(jié)構(gòu)體就是item: ;反之,如果結(jié)構(gòu)體是多個(gè),那么列表也會(huì)明顯的表示出來,如:搜索商品列表的結(jié)構(gòu)體就會(huì)是”items”:“item”: , 。最外層的items表示這是一個(gè)商品的列表,后面的item表示列表中的每一個(gè)子結(jié)構(gòu)體都是屬于商品item的,然后就跟著商品的數(shù)據(jù);最內(nèi)一層就商品的具體字段信息了。2. 調(diào)用錯(cuò)誤返回當(dāng)調(diào)用發(fā)生錯(cuò)誤的時(shí)候,一般情況下可以分為幾大類錯(cuò)誤信息的返回:http連接錯(cuò)誤、平臺(tái)解析錯(cuò)誤、業(yè)務(wù)處理錯(cuò)誤。這三種類型的錯(cuò)誤分別代表了:淘寶服務(wù)器、淘寶接入平臺(tái)、top-api業(yè)務(wù),幾個(gè)層次上出現(xiàn)的問題。1) http連接錯(cuò)誤http連接錯(cuò)誤是請(qǐng)求通信過程中出現(xiàn)的錯(cuò)誤,這類型錯(cuò)誤通常由http響應(yīng)碼標(biāo)記出來。http響應(yīng)碼由三位十進(jìn)制數(shù)字組成,它們出現(xiàn)在由HTTP服務(wù)器發(fā)送的響應(yīng)的第一行。響應(yīng)碼分五種類型,由它們的第一位數(shù)字表示:1xx:信息,請(qǐng)求收到,繼續(xù)處理2xx:成功,行為被成功地接受、理解和采納3xx:重定向,為了完成請(qǐng)求,必須進(jìn)一步執(zhí)行的動(dòng)作4xx:客戶端錯(cuò)誤,請(qǐng)求包含語法錯(cuò)誤或者請(qǐng)求無法實(shí)現(xiàn)5xx:服務(wù)器錯(cuò)誤,服務(wù)器不能實(shí)現(xiàn)一種明顯無效的請(qǐng)求Isv調(diào)用top服務(wù)最常收到就是200:http請(qǐng)求成功;404:未找到請(qǐng)求的服務(wù);500內(nèi)部服務(wù)器錯(cuò)誤等等。如果用戶收到的響應(yīng)碼是404,表示用戶的網(wǎng)絡(luò)有問題或者top被和諧了如果用戶收到的響應(yīng)碼是500,表示網(wǎng)絡(luò)是ok的,是top的服務(wù)無法響應(yīng)。2) 服務(wù)端錯(cuò)誤總述平臺(tái)解析錯(cuò)誤和業(yè)務(wù)處理錯(cuò)誤都是http成功訪問到top服務(wù)(http響應(yīng)碼返回為200)之后所產(chǎn)生的錯(cuò)信息,他們top處理isv請(qǐng)求過程中出現(xiàn)的問題。1.0和2.0的格式有所不同。1.0的錯(cuò)誤響應(yīng)信息最外層為“error_rsp”: ,表示這是調(diào)用錯(cuò)誤所返回的信息。里面一層包含兩個(gè)元素:”code”:” ”和 “msg”:” ”,前者表示錯(cuò)誤碼是多少,后者表示錯(cuò)誤信息是什么。例如錯(cuò)誤的調(diào)用1.0的taobao.item.get服務(wù)錯(cuò)誤時(shí)返回的錯(cuò)誤信息:error_rsp:code:40,msg:Missing required arguments:missing parameter iid/num_iid。這個(gè)信息的開頭為error_rsp,表示這是調(diào)用錯(cuò)誤所返回的結(jié)果。里面包含的錯(cuò)誤體的code為40,是平臺(tái)型錯(cuò)誤,表示錯(cuò)誤是缺少了必傳參數(shù)所引起的。然后msg內(nèi)容為Missing required arguments:missing parameter iid/num_iid,表示缺少的必傳參數(shù)是iid或者num_iid。Isv解析到這些信息后就需要根據(jù)錯(cuò)誤信息改進(jìn)自己傳入的參數(shù)來使調(diào)用成功。2.0的錯(cuò)誤響應(yīng)信息的最外層為“error_response”:” ”,表示這是調(diào)用服務(wù)失敗所返回的錯(cuò)誤信息。信息體里面一層總共包含了五個(gè)元素:args:arg:“key”:“ ”,”value”:” ”,“key”:“ ”,”value”:” ”,“key”:“ ”,”value”:” ”,”code”:” ”, “msg”:” ”,”sub_code”:” ”和”sub_msg”:” ”。args表示用戶傳入的參數(shù)列表是什么,里面是一個(gè)arg的列表會(huì)包含用戶傳入的所有參數(shù)信息,每個(gè)arg表示一個(gè)參數(shù)的信息,key表示參數(shù)的名稱,value表示參數(shù)的內(nèi)容,用以方便用戶定位自己的錯(cuò)誤;code表示用戶調(diào)用錯(cuò)誤的錯(cuò)誤碼是多少,小于200表示平臺(tái)級(jí)錯(cuò)誤,200-1000之間表示大范圍的業(yè)務(wù)錯(cuò)誤,即哪一類型的api調(diào)用發(fā)生了錯(cuò)誤(根據(jù)api的大類來分,如:商品類的api是530,交易類的api是520,等);msg表示大類型的錯(cuò)誤碼所對(duì)應(yīng)的錯(cuò)誤信息,一般不具備獨(dú)立的debug作用,需要和sub_code和sub_msg一起使用才行;sub_code是調(diào)用錯(cuò)誤的子錯(cuò)誤碼,他表示用戶調(diào)用錯(cuò)誤的原因;sub_msg是子錯(cuò)誤碼所對(duì)應(yīng)的錯(cuò)誤信息,他用來補(bǔ)充細(xì)化子錯(cuò)誤碼的錯(cuò)誤原因的。例如調(diào)用2.0的taobao.item.get服務(wù)錯(cuò)誤時(shí)返回的錯(cuò)誤信息:error_response:args:arg:key:app_key,value:15739,key:fields,value:list_time,delist_time,approve_status,key:format,value:json,key:method,value:taobao.item.get,key:nick,value:tbtest561,key:partner_id,value:TOPTEST,key:sign,value:668FB4A049F71A1C845EF8C05B1F3E66,key:timestamp,value:2010-03-05 18:03:06.325,key:v,value:2.0,code:530,msg:Remote service error,sub_code:missing-parameter,sub_msg:iid和num_iid至少要傳入一個(gè)這個(gè)信息的開頭為error_response,表示這是調(diào)用錯(cuò)誤所返回的錯(cuò)誤信息。里面的args列出了用調(diào)用這個(gè)接口傳入的信息有:key:app_key,value:15739,key:fields,value:list_time,delist_time,approve_status,key:format,value:json,key:method,value:taobao.item.get,key:nick,value:tbtest561,key:partner_id,value:TOPTEST,key:sign,value:668FB4A049F71A1C845EF8C05B1F3E66,key:timestamp,value:2010-03-05 18:03:06.325,key:v,value:2.0,這些信息是從用戶的請(qǐng)求信息里面解析出來的。錯(cuò)誤碼code為530,表示這是調(diào)用商品的api所產(chǎn)生的錯(cuò)誤。錯(cuò)誤信息msg為Remote service error表示這是調(diào)用業(yè)務(wù)處理所產(chǎn)生的錯(cuò)誤。子錯(cuò)誤碼sub_code為:missing-parameter,表示這個(gè)錯(cuò)誤是因?yàn)槿鄙倭藚?shù)所產(chǎn)生的。子錯(cuò)誤信息sub_msg為:iid和num_iid至少要傳入一個(gè),表示少傳的參數(shù)為iid或num_iid。這所有的錯(cuò)誤信息疊加起來可以知道,這個(gè)錯(cuò)誤是用戶調(diào)用taobao.item.get接口時(shí)業(yè)務(wù)處理發(fā)現(xiàn)用戶沒有傳入商品id所導(dǎo)致的。3) 平臺(tái)解析錯(cuò)誤平臺(tái)解析錯(cuò)誤是指top返回的錯(cuò)誤碼小于100的情況。平臺(tái)解析是非業(yè)務(wù)性的普適的校驗(yàn)接入層,主要用于對(duì)用戶的各種權(quán)限、和入?yún)⑦M(jìn)行最基本的校驗(yàn)?,F(xiàn)在的平臺(tái)錯(cuò)誤碼主要有:Isv可以通過錯(cuò)誤碼和解釋來糾正問題。如:錯(cuò)誤碼為3的響應(yīng)表示圖片上傳失敗,錯(cuò)誤碼為26表示用戶沒有傳入session參數(shù),錯(cuò)誤碼為27表示用戶傳入的session參數(shù)找不到對(duì)應(yīng)的session記錄,等等。4) 業(yè)務(wù)處理錯(cuò)誤業(yè)務(wù)處理錯(cuò)誤是用戶通過平臺(tái)校驗(yàn)進(jìn)入業(yè)務(wù)流程出現(xiàn)了錯(cuò)誤所發(fā)出來的。這一層的錯(cuò)誤碼根據(jù)調(diào)用版本不同分為兩種。如果版本是1.0,那么返回的錯(cuò)誤信息格式就是:“error_rsp”:“code”:XXX,”msg”:”,里面的code是數(shù)字形式的標(biāo)記著一種錯(cuò)誤的編碼,msg是字符串形式,標(biāo)記在錯(cuò)誤的具體信息。如,獲取當(dāng)商品失敗的錯(cuò)誤信息就是:error_rsp:code:551,msg:Item service unavailable:獲取單個(gè)商品失敗。1.0的錯(cuò)誤碼有以下幾種:1.0的返回的錯(cuò)誤code就是其中的錯(cuò)誤碼,錯(cuò)誤msg就是其中的英文錯(cuò)誤描述加上具體的錯(cuò)誤信息組成的。如果版本是2.0,那么服務(wù)器所返回的錯(cuò)誤信息格式就是:“error_response”:args:arg:“key”:“ ”,”value”:” ”,“key”:“ ”,”value”:” ”,“key”:“ ”,”value”:” ”,”code”:” ”,“msg”:” ”,”sub_code”:” ”,”sub_msg”:” ”,里面的code是數(shù)字形式的標(biāo)記著一種業(yè)務(wù)類型的錯(cuò)誤編碼,msg則是比較大范圍內(nèi)的表示錯(cuò)誤類型的字符串。而sub_code是以字符串形式粗略表示錯(cuò)誤的類型,sub_msg則是表示具體的錯(cuò)誤原因。2.0的code包含以下幾種分類:產(chǎn)品線錯(cuò)誤碼用戶500類目510交易520退款521商品530商品擴(kuò)展API531郵費(fèi)模板532產(chǎn)品540物流550店鋪560評(píng)價(jià)570淘寶客580系統(tǒng)590備案591增量API600比價(jià)610畫報(bào)620江湖630分銷640淘秀650收費(fèi)660Misc(保證金等雜項(xiàng)api)670由上圖可知,每一大類的api在2.0中其實(shí)是共享一個(gè)code的,它能讓用戶在復(fù)雜組合調(diào)用中指導(dǎo)是哪一類的api出現(xiàn)了問題,實(shí)現(xiàn)初步的定位。2.0的業(yè)務(wù)錯(cuò)誤中,msg里面最容易出現(xiàn)的內(nèi)容就是Remote service error,這表示用戶是在通過了平臺(tái)校驗(yàn)后進(jìn)行業(yè)務(wù)流程的時(shí)候出現(xiàn)的錯(cuò)誤。其他的錯(cuò)誤還有Remote Service Timeout:后臺(tái)處理業(yè)務(wù)超時(shí)等等的錯(cuò)誤。這一個(gè)錯(cuò)誤信息的力度比較粗,很難單獨(dú)用她進(jìn)行錯(cuò)誤處理。2.0的業(yè)務(wù)處理錯(cuò)誤信息主要要看sub_code和sub_msg這連個(gè)字段。sub_code表示了服務(wù)費(fèi)對(duì)業(yè)務(wù)錯(cuò)誤的分類,sub_msg表示了是錯(cuò)誤原因。Sub_code根據(jù)業(yè)務(wù)錯(cuò)誤類型主要可以分為如下幾類子錯(cuò)誤碼錯(cuò)誤歸類user-not-exist用戶不存在missing-parameter缺少參數(shù)invalid-parameter參數(shù)錯(cuò)誤parameters-mismatch參數(shù)不匹配(主要針對(duì)那些需要一一對(duì)應(yīng)的入?yún)ⅲ㊣nvalid-permission權(quán)限不足remote-service-error調(diào)用后端服務(wù)錯(cuò)誤remote-service-timeout調(diào)用后端服務(wù)超時(shí)remote-connection-error調(diào)用后端服務(wù)連接錯(cuò)誤XXX-service-unavailable調(diào)用后端服務(wù)失敗item-extra-not-exist商品擴(kuò)展信息不存在trade-not-exist交易記錄不存在refund-not-exist退款記錄不存在每一類的子錯(cuò)誤碼代表著某一類型的錯(cuò)誤,例如user-not-exist表示用戶傳入的nick或者用戶綁定的session所對(duì)應(yīng)的nick找不到對(duì)應(yīng)的用戶記錄,Invalid-permission表示用戶由于權(quán)限問題不能進(jìn)行某些操作。sub_code給予isv或用戶以改進(jìn)錯(cuò)誤的方向,而sub_msg則告訴用戶改進(jìn)點(diǎn)。例如sub_code為invalid-parameter,sub_msg為用戶傳入的iid不能超過40個(gè),這就表示著,這次錯(cuò)誤的原因是用戶傳入的參數(shù)iid由于數(shù)量超過40個(gè)而產(chǎn)生了錯(cuò)誤。錯(cuò)誤響應(yīng)時(shí)用戶和服務(wù)器交互失敗的最直接展示,isv在調(diào)用top服務(wù)時(shí),如果調(diào)用失敗,請(qǐng)盡量保留下錯(cuò)誤信息(建議盡量改用2.0調(diào)用,這個(gè)版本的錯(cuò)誤信息比較全面),以便進(jìn)行后面的錯(cuò)誤追查。三、 響應(yīng)格式錯(cuò)誤處理響應(yīng)格式錯(cuò)誤是指用戶調(diào)用top服務(wù)時(shí),傳入?yún)?shù)設(shè)置了format參數(shù)為json,但是接受到的卻為xml的響應(yīng)格式,或者設(shè)置格式為xml接收到的卻為json響應(yīng)的格式的情況。一般正常情況下這種情況是不會(huì)出現(xiàn)的,但是還是會(huì)有一些異常的情況會(huì)引起這個(gè)問題。這種響應(yīng)格式錯(cuò)誤的問題在isv的程序中通常會(huì)表現(xiàn)為,響應(yīng)解析格式錯(cuò)誤。例如:用戶使用的top的java SDK客戶端調(diào)用top服務(wù),設(shè)置的format格式為json卻得到了一個(gè)xml的響應(yīng),這是sdk就會(huì)報(bào)一個(gè)錯(cuò)誤說響應(yīng)開始處缺少一個(gè)“”符號(hào)。這是因?yàn)閤ml響應(yīng)是以“”開始的緣故。一般會(huì)發(fā)生這種現(xiàn)象的原因有一下三種:用戶傳入的參數(shù)過大導(dǎo)致流解析異常,用戶調(diào)用太過頻繁道士響應(yīng)異常,top服務(wù)器故障。為了定位到問題出在哪里,以便找到相應(yīng)的解決方法,用戶在遇到響應(yīng)格式錯(cuò)誤的情況時(shí)可以參考以下步驟進(jìn)行調(diào)試。1. 響應(yīng)格式格式錯(cuò)誤,但數(shù)據(jù)正確用戶第一步應(yīng)該分析一下相應(yīng)的內(nèi)容里面是不是除了格式錯(cuò)誤以外,其他的響應(yīng)內(nèi)容都是正確調(diào)用的返回結(jié)果。例如,有個(gè)用戶用top的sdk,設(shè)置format為json,調(diào)用top得到了這樣一個(gè)返回結(jié)果:com.taobao.api.json.JSONException:AJSONObjecttextmustbeginwithatcharacter111152010-03-0116:04:152010-03-0116:04:052010-03-0116:03:592010-03-0116:03:532010-03-0107:30:52從這個(gè)異常的開頭可以看到,這是sdk的json解析拋了一個(gè)異常,說響應(yīng)內(nèi)容的內(nèi)容應(yīng)該是以“”開始的。這說名,isv收到的響應(yīng)格式肯定出了問題。再看一下響應(yīng)的內(nèi)容相應(yīng)結(jié)果標(biāo)簽之間包含了totalResults和item列表,這些數(shù)據(jù)表明,這是調(diào)用商品查詢接口返回的結(jié)果數(shù)據(jù):查詢到的結(jié)果總數(shù)是1115條,當(dāng)前頁的商品iid和最近修改時(shí)間也在其中。這些查詢結(jié)果數(shù)據(jù)是正常的,但是返回格式卻不是傳入的json而是變成了xml。這位isv聯(lián)系了top的技術(shù)支持,在建議減緩調(diào)用頻率以后,返回的數(shù)據(jù)格式正常了,這樣就臨時(shí)控制了這種情況的發(fā)生。同時(shí)技術(shù)支持將這些情況反映到了開發(fā),top這邊后續(xù)就會(huì)找到問題根源,進(jìn)一步杜絕這種情況的發(fā)生。2. 響應(yīng)格式錯(cuò)誤,數(shù)據(jù)也錯(cuò)誤如果用戶第一步分析發(fā)現(xiàn),返回的信息并不是調(diào)用成功的信息而是某個(gè)平臺(tái)錯(cuò)誤,而且用戶本身的參數(shù)并不會(huì)導(dǎo)致這個(gè)錯(cuò)誤的產(chǎn)生,此時(shí)用戶就需要查看自己調(diào)用接口的參數(shù)了。如果用戶調(diào)用的接口需要傳入比較大的數(shù)據(jù)(如:圖片、商品的長篇描述等等),那么用戶應(yīng)首先嘗試著減小這些入?yún)⒌胶戏ǚ秶鷥?nèi)輸入(傳入小圖片或者之傳入少量的描述文字等)。如果用戶調(diào)用成功,表示錯(cuò)誤是因?yàn)橛脩羧雲(yún)⑻笤斐闪私馕鲥e(cuò)誤引起的,用戶應(yīng)配合自己所在地方的網(wǎng)速,請(qǐng)求大小等等的信息合理設(shè)置自己的參數(shù)大小和接口調(diào)用順序。如果用戶減小參數(shù)還是解析失敗的話,用戶嘗試著不傳入圖片或只傳入幾個(gè)字節(jié)的描述的內(nèi)容進(jìn)行接口調(diào)用。在傳入描述只有很少的字節(jié)的情況下:如果不傳圖片調(diào)用成功了,那么應(yīng)該是top的服務(wù)器的問題,請(qǐng)將這個(gè)情況反饋給技術(shù)支持進(jìn)行解決;如果圖片不傳調(diào)用仍然失敗了,那么應(yīng)該是用戶的調(diào)用參數(shù)或網(wǎng)絡(luò)有問題,請(qǐng)仔細(xì)對(duì)照文檔說明對(duì)參數(shù)進(jìn)行修改或等待網(wǎng)絡(luò)狀態(tài)好一點(diǎn)的時(shí)候進(jìn)行調(diào)用??偟膩碚f,如果用戶發(fā)生了響應(yīng)格式錯(cuò)誤的情況,一般分為三種情況:用戶本身傳入的format就是錯(cuò)誤的,這種情況用戶需要查看自己傳入的參數(shù)是否正確;用戶通信的網(wǎng)絡(luò)太差,服務(wù)端造成請(qǐng)求解析失敗而丟失了format信息,這種情況下用戶需要調(diào)整自己的網(wǎng)絡(luò)通信情況,等狀況恢復(fù)再調(diào)用;如果是其他由于圖片或調(diào)用太頻繁而引起的問題,用戶需要減小圖片或減緩調(diào)用來提高成功率,并且將這些情況通報(bào)給top技術(shù)支持的同學(xué)。四、 平臺(tái)級(jí)錯(cuò)誤處理在前文的錯(cuò)誤綜述中介紹過,top的錯(cuò)誤可以分為平臺(tái)級(jí)錯(cuò)誤和業(yè)務(wù)級(jí)錯(cuò)誤。所謂平臺(tái)級(jí)錯(cuò)誤就是指:錯(cuò)誤碼小于100的調(diào)用錯(cuò)誤。這種錯(cuò)誤一般是由于用戶的請(qǐng)求不符合各種的基本校驗(yàn)而引起的。下面將對(duì)于各種平臺(tái)級(jí)錯(cuò)誤及相應(yīng)的解決辦法陳列于此。錯(cuò)誤碼錯(cuò)誤解釋解決辦法3圖片上傳失敗將傳入的圖片格式改為正確的格式、適當(dāng)?shù)拇笮〉膱D片放進(jìn)消息體里面?zhèn)鬏斶^來。如果傳輸仍然失敗需要減小圖片大小或者增加網(wǎng)絡(luò)帶寬進(jìn)行嘗試4用戶調(diào)用次數(shù)超限調(diào)整程序邏輯合理利用api,等第二天再調(diào)用?;蛘呦蚣夹g(shù)運(yùn)維的同學(xué)申請(qǐng)?jiān)黾诱{(diào)用次數(shù)5會(huì)話調(diào)用次數(shù)超限6合作伙伴調(diào)用次數(shù)超限7應(yīng)用調(diào)用次數(shù)超限8應(yīng)用調(diào)用頻率超限Isv調(diào)節(jié)api調(diào)用頻率,不能太過頻繁的調(diào)用9HTTP方法被禁止請(qǐng)用大寫的POST或GET,如果有圖片等信息傳入則一定要用POST才可以10服務(wù)不可用多數(shù)是由未知異常引起的,用戶仔細(xì)檢查自己傳入的參數(shù)是否符合文檔中描述的樣子11開發(fā)者權(quán)限不足appKey所對(duì)應(yīng)的應(yīng)用不具備權(quán)限調(diào)用當(dāng)前接口。需要聯(lián)系運(yùn)營或技術(shù)支持的同學(xué)開通調(diào)用該接口的權(quán)限。12用戶權(quán)限不足13合作伙伴權(quán)限不足15遠(yuǎn)程服務(wù)出錯(cuò)Api調(diào)用后端服務(wù)出錯(cuò),isv首先查看自己的參數(shù)是否合法,如果參數(shù)沒有問題請(qǐng)過一段時(shí)間再嘗試,如果還不行請(qǐng)聯(lián)系技術(shù)支持21缺少方法名參數(shù)傳入的參數(shù)加入method字段22不存在的方法名傳入的method字段必需是你所調(diào)用的api的名稱,并且該api是確實(shí)存在的23非法數(shù)據(jù)格式傳入的format必需為json或xml中的一種24缺少簽名參數(shù)傳入的參數(shù)中必需包含sign字段25非法簽名簽名必需根據(jù)正確的算法算出來的。算法請(qǐng)見:26缺少SessionKey參數(shù)傳入的參數(shù)中必需包含session字段27非法的SessionKey參數(shù)傳入的session必需是用戶綁定session拿到的。如果報(bào)session不合法可能是用戶沒有綁定session或session過期造成的,用戶需要重新綁定一下然后傳入新的sessionKey。28缺少AppKey參數(shù)傳入的參數(shù)必需包含app_key字段29非法的AppKey參數(shù)用戶傳入的appKey參數(shù)確實(shí)是要存在的,如果沒有申請(qǐng)appKey的同學(xué)請(qǐng)去申請(qǐng)appKey,如果是已經(jīng)有了appKey卻調(diào)用不同過的,請(qǐng)聯(lián)系技術(shù)支持解決30缺少時(shí)間戳參數(shù)傳入的參數(shù)中必需包含timestamp參數(shù)31非法的時(shí)間戳參數(shù)用戶傳入的時(shí)間戳不合法。時(shí)間戳,格式為yyyy-mm-dd hh:mm:ss,例如:2008-01-25 20:23:30。淘寶API服務(wù)端允許客戶端請(qǐng)求時(shí)間誤差為10分鐘。32缺少版本參數(shù)傳入的參數(shù)中必需包含v字段33非法的版本參數(shù)用戶傳入的版本號(hào)格式錯(cuò)誤,必需為數(shù)字格式34不支持的版本號(hào)用戶傳入的版本號(hào)沒有被提供?,F(xiàn)在top只支持1.0或2.0兩種版本40缺少必選參數(shù)用戶傳入的參數(shù)中漏掉了必傳的參數(shù)。請(qǐng)仔細(xì)對(duì)照文檔檢查41非法的參數(shù)用戶傳入的參數(shù)不符合文檔中說明的參數(shù)格式,請(qǐng)參照文檔進(jìn)行修改42請(qǐng)求被禁止請(qǐng)求 被禁止(目前沒有在控制)43參數(shù)錯(cuò)誤參數(shù)解析發(fā)生錯(cuò)誤或異常。一般是用戶傳入?yún)?shù)非法引起的。請(qǐng)仔細(xì)檢查入?yún)⒏袷健⒎秶?、是否一一?duì)應(yīng)等等情況。44Isp error后臺(tái)接入服務(wù)錯(cuò)誤這種后臺(tái)服務(wù)異常引起的錯(cuò)誤,請(qǐng)聯(lián)系技術(shù)支持?;旧蟻碚f,平臺(tái)錯(cuò)誤是一個(gè)通用的、普適的校驗(yàn)。一般針對(duì)用戶的權(quán)限、安全、流量和最基本的參數(shù)等等進(jìn)行校驗(yàn)。用戶遇到這些錯(cuò)誤的返回一定要第一步檢查自己的權(quán)限、頻率等情況;然后就需要參照文檔檢驗(yàn)一下自己的傳入的參數(shù)是否完整且合法;如果這些都無法解決問題,請(qǐng)聯(lián)系技術(shù)支持的同學(xué)進(jìn)行反饋,top后臺(tái)會(huì)盡快解決這些問題。五、 業(yè)務(wù)級(jí)錯(cuò)誤處理業(yè)務(wù)級(jí)錯(cuò)誤是指isv請(qǐng)求進(jìn)入top業(yè)務(wù)處理以后爆出來的業(yè)務(wù)相關(guān)的錯(cuò)誤,通常錯(cuò)誤碼分部在500-1000之間。Top的業(yè)務(wù)錯(cuò)誤一般可以分為4個(gè)大類:參數(shù)錯(cuò)誤、權(quán)限控制、用戶不存在和服務(wù)錯(cuò)誤。1. 參數(shù)錯(cuò)誤參數(shù)錯(cuò)誤指topapi根據(jù)業(yè)務(wù)要求對(duì)用戶傳入的參數(shù)進(jìn)行校驗(yàn)組裝的時(shí)候產(chǎn)生的錯(cuò)誤。1.0中的參數(shù)錯(cuò)誤碼有: 505,Missing Parameters;506,Parameters error;507,Parameters Format error和XXX,”XXX not exist”(這里XXX表示未知的數(shù)字或字符串)等等。其中:505表示缺少傳入某些需要傳入的參數(shù)(如:獲取sku列表的時(shí)候要求至少傳入一個(gè)iid,isv卻什么都沒有傳入);506表示傳入的參數(shù)錯(cuò)誤(如:傳入的iid找到對(duì)應(yīng)的商品已刪除、傳入的類目不存在等等);507表示用戶傳入的參數(shù)的格式不符合規(guī)定(如:需要傳入數(shù)字的參數(shù)用戶傳入了非數(shù)字的字符);XXX not exist表示根據(jù)用戶指定的參數(shù)(如:iid、tid等數(shù)據(jù))找不到對(duì)應(yīng)的記錄,等等。2.0中的參數(shù)錯(cuò)誤的錯(cuò)誤碼是在調(diào)用返回的sub_code子錯(cuò)誤碼里面得到具體體現(xiàn)的。2.0的參數(shù)錯(cuò)誤一般有如下幾個(gè)錯(cuò)誤碼:missing-parameter,invalid-parameter,parameters-mismatch,XXX-not-exist等等。這幾種錯(cuò)誤分別表示:missing-parameter表示缺少了某些必傳參數(shù)(如:獲取單個(gè)商品是iid和num_iid一個(gè)都沒傳入);invalid-parameter表示用戶傳入的參數(shù)錯(cuò)誤(如:傳入的iids個(gè)數(shù)不符合規(guī)定,傳入的iid對(duì)應(yīng)的商品已刪除等等);parameters-mismatch表示用戶傳入的某些有對(duì)應(yīng)關(guān)系的參數(shù)個(gè)數(shù)不匹配了(如:input_pids和input_str長度不匹配,或者sku_properties和sku的其他參數(shù)個(gè)數(shù)不匹配);XXX-not-exist表示用戶指定的參數(shù)找不到對(duì)應(yīng)的記錄(即這個(gè)參數(shù)所對(duì)應(yīng)的記錄不存在或已經(jīng)被刪除了)。不管是1.0還是2.0的參數(shù)錯(cuò)誤,都是由于isv傳入的參數(shù)有問題而引起的。用戶在遇到報(bào)參數(shù)錯(cuò)誤的情況下,需要查看對(duì)應(yīng)的錯(cuò)誤消息內(nèi)容(1.0就是msg,2.0是sub_msg)中的說明來進(jìn)行入?yún)⑿薷摹=ㄗh將這部分內(nèi)容展示給用戶,可以讓用直觀的看到錯(cuò)誤的原因,從而改進(jìn)輸入。2. 權(quán)限控制權(quán)限控制的錯(cuò)誤是指用戶使用了自己不享有的服務(wù)所造成的錯(cuò)誤。這類型的錯(cuò)誤:1.0的錯(cuò)誤碼為:509,Permission limited;2.0的子錯(cuò)誤碼為:invalid-permission。這類型的錯(cuò)誤通常都是用戶進(jìn)行的操作觸碰到了淘寶的業(yè)務(wù)規(guī)則,導(dǎo)致了top的業(yè)務(wù)校驗(yàn)不通過。如:用戶沒有登錄卻要獲取某個(gè)賣家倉庫中的商品,用戶不享有多圖服務(wù)卻要上傳商品多圖或商品屬性圖片,成人類目直接上傳圖片,修改自動(dòng)發(fā)貨的商品,不是賣家或買家卻要獲取交易詳細(xì)信息的這些錯(cuò)誤并不是用戶傳入的參數(shù)找不到相應(yīng)的數(shù)據(jù)、或者傳入的參數(shù)是錯(cuò)誤的造成的。相反的,用戶傳入的參數(shù)都符合文檔描述,但是用戶不具備權(quán)限來進(jìn)行相應(yīng)的操作。在這種情況下,isv有幾條路可以選擇。第一:對(duì)于查詢類型的權(quán)限控制:如果用戶是信息的所有者,那么需要讓用戶進(jìn)行登錄綁定,這樣用戶就夠進(jìn)行權(quán)限控制的操作了;如果用戶不是信息的合法查看人,那么isv要明確的告訴用戶這個(gè)操作不可以進(jìn)行,并且不要進(jìn)行重試操作了。第二:對(duì)于增刪改類型的操作的權(quán)限控制:如果用戶是因?yàn)闆]有享有服務(wù)(如:沒有享有圖片空間的服務(wù))而產(chǎn)生的權(quán)限限制,isv需要引導(dǎo)用戶去進(jìn)行服務(wù)的開通后再來進(jìn)行操作,之后再重新調(diào)用接口;如果是因?yàn)橛脩舨僮髁藙e人的數(shù)據(jù)而引起的權(quán)限控制,那么isv要明確的跟用戶報(bào)錯(cuò),并且不能再進(jìn)行重試操作??傊?,當(dāng)用戶遇到報(bào)權(quán)限控制的錯(cuò)誤時(shí),isv不能直接進(jìn)行重試。應(yīng)該將問題直接告訴用戶,并引導(dǎo)用戶進(jìn)行相關(guān)的登錄、開通服務(wù)等操作來調(diào)整權(quán)限以后,再讓用戶重試操作。如果用戶不愿意進(jìn)行調(diào)整,isv此時(shí)應(yīng)該直接停止該操作,不能默認(rèn)的進(jìn)行重試,因?yàn)檫@種前提下,重試是完全沒有作用的。3. 用戶不存在用戶不存在是指top后臺(tái)根據(jù)用戶綁定的nick或者傳入的nick對(duì)用戶信息進(jìn)行查詢的時(shí)候找不到用戶記錄所報(bào)出的錯(cuò)誤。1.0的錯(cuò)誤碼:601, User not exist;2.0的子錯(cuò)誤碼:user-not-exist。用戶遇到這種問題首先請(qǐng)確認(rèn)調(diào)用的這個(gè)接口自己有沒有傳入nick這個(gè)參數(shù)。如果nick是根據(jù)用戶綁定的session取得的,那么用戶需要過一會(huì)兒再重新調(diào)用看看。如果隔一段時(shí)間還不行,請(qǐng)聯(lián)系技術(shù)支持解決。如果用戶自己通過參數(shù)傳入了nick,那么請(qǐng)用戶仔細(xì)檢查自己傳入的nick是否正確。例如:有沒有多一個(gè)空格或者大小寫錯(cuò)誤的?該用戶是否確實(shí)存在的?等等。如果問題是因?yàn)槊Q錯(cuò)誤或用戶確實(shí)不存在引起,用戶需要更改輸入?yún)?shù)后才能再次調(diào)用。如果用戶名稱正確,用戶也確實(shí)存在,卻還是報(bào)用戶不存在錯(cuò)誤,用戶需要檢查傳入的nick是否包含難以識(shí)別的編碼的字體。如果nick中包含了火星文或者其他編碼的字體,請(qǐng)考慮將nick轉(zhuǎn)換成utf8以后重新嘗試或者放棄此次操作。如果上述問題都不存在,請(qǐng)聯(lián)系技術(shù)支持的同學(xué)進(jìn)行查看。整個(gè)查錯(cuò)過程如下所示:4. 服務(wù)錯(cuò)誤服務(wù)錯(cuò)誤主要指用戶的請(qǐng)求通過了api業(yè)務(wù)的基本校驗(yàn),在調(diào)用后臺(tái)服務(wù)的時(shí)候由于出現(xiàn)了異?;蛘吒M(jìn)步的業(yè)務(wù)報(bào)錯(cuò)而產(chǎn)生的錯(cuò)誤。這一類錯(cuò)誤主要分為3個(gè)大類:服務(wù)調(diào)用錯(cuò)誤、服務(wù)調(diào)用異常、遠(yuǎn)程調(diào)用錯(cuò)誤、top解析錯(cuò)誤。a) 服務(wù)調(diào)用錯(cuò)誤服務(wù)調(diào)用錯(cuò)誤,是指通過top校驗(yàn)進(jìn)入后端調(diào)用服務(wù)以后,由于不符合進(jìn)一步的業(yè)務(wù)邏輯校驗(yàn)而出現(xiàn)的錯(cuò)誤。如:發(fā)布商品的屬性不符合商品類目的要求,評(píng)價(jià)的交易已經(jīng)過期等等。這些錯(cuò)誤在1.0的錯(cuò)誤返回錯(cuò)誤碼為:XXX,”XXX service error”,在2.0的返回子錯(cuò)誤碼為:XXX-service-error。用戶遇到這種返回表明top的服務(wù)是正常的,是用戶的參數(shù)不合規(guī)定所引起。請(qǐng)根據(jù)返回的具體msg和sub_msg內(nèi)容定位問題,然后改正入?yún)⒑笤僬{(diào)用。如果確認(rèn)參數(shù)錯(cuò)誤卻一直通不過調(diào)用,請(qǐng)聯(lián)系技術(shù)支持的同學(xué)咨詢情況,切勿盲目重試。b) 服務(wù)調(diào)用異常服務(wù)調(diào)用異常是指服務(wù)調(diào)用過程中由于后端服務(wù)器沒有響應(yīng)或者產(chǎn)生了異?;蛘遲op服務(wù)本身產(chǎn)生了未被捕獲的異常而產(chǎn)生的錯(cuò)誤。這些錯(cuò)誤在1.0的錯(cuò)誤返回錯(cuò)誤碼為:XXX,”XXX service unavailable”,在2.0的返回子錯(cuò)誤碼為:XXX-service-unavailable。這種錯(cuò)誤有可能是后端服務(wù)暫時(shí)不可用所引起的,所以用戶遇到這種錯(cuò)誤時(shí)首先應(yīng)該查看返回的錯(cuò)誤信息里面有沒有有效的提示信息,如果有請(qǐng)先按照提示改正問題再調(diào)用;如果沒有有效的提示信息,請(qǐng)等待一段時(shí)間再調(diào)用。如果一直都是這個(gè)錯(cuò)誤,請(qǐng)聯(lián)系技術(shù)支持查看問題所在。切忌立即反復(fù)重試。c) 遠(yuǎn)程調(diào)用錯(cuò)誤遠(yuǎn)程調(diào)用錯(cuò)誤是指top在調(diào)用后方服務(wù)時(shí)發(fā)生了調(diào)用錯(cuò)誤或超時(shí)的情況。這類錯(cuò)誤可能是由于后端服務(wù)過于繁忙或者服務(wù)失效引起的。這些錯(cuò)誤在1.0的錯(cuò)誤返回錯(cuò)誤碼為:900,Remote Connection Error,901,Remote Service Timeout,902,Remote Service Error,在2.0的返回子錯(cuò)誤碼為:remote-service-error,remote-service-timeout,remote-connection-error。用戶遇到這種情況,首先考慮的是等待一段時(shí)間重試看服務(wù)是否恢復(fù)。如果服務(wù)已經(jīng)恢復(fù),則這個(gè)只是短時(shí)間服務(wù)過于擁擠造成的;如果多次重試仍然是不可用,那么這個(gè)可能是后端服務(wù)出了問題,請(qǐng)聯(lián)系技術(shù)支持進(jìn)行處理。d) Top解析錯(cuò)誤Top解析錯(cuò)誤目前主要針對(duì)的是用戶調(diào)用top服務(wù)時(shí)產(chǎn)生的未被捕獲的空指針或者參數(shù)轉(zhuǎn)換異常所產(chǎn)生的錯(cuò)誤。這些錯(cuò)誤是由于用戶的請(qǐng)求有錯(cuò)誤引發(fā)了top本身的服務(wù)流程的潛在隱患所引起的。1.0的錯(cuò)誤返回錯(cuò)誤碼為:510,Top parse error,在2.0的返回子錯(cuò)誤碼為:top-parse-error。用戶遇到這種問題時(shí),請(qǐng)先仔細(xì)檢查自己的參數(shù),根據(jù)文檔說明修改完善以后再嘗試調(diào)用,一般正常情況,只要入?yún)⒑戏ㄊ悄軌虺晒Φ?。如果確定參數(shù)正確的前提下還是調(diào)用報(bào)這個(gè)錯(cuò)誤,請(qǐng)聯(lián)系技術(shù)支持的同學(xué)反饋這個(gè)問題。六、 返回參數(shù)缺失處理返回參數(shù)缺失是指用戶調(diào)用api返回成功,但是消息體里面的內(nèi)容和所請(qǐng)求的內(nèi)容不一致的情況。這種情況細(xì)分可以分為三種情況:整個(gè)消息體為空、消息體缺少文檔定義的結(jié)構(gòu)返回、返回的結(jié)構(gòu)體中缺少fields指定的某些字段的返回。1. 整個(gè)消息體為空或缺少文檔中說明的結(jié)構(gòu)體返回。整個(gè)消息體為空或缺少文檔中說明的結(jié)構(gòu)體是指:返回結(jié)果是非失敗的情況下,得到的Response的body內(nèi)容和文檔定義不一致(比文檔寫到要缺少某些內(nèi)容)的情況。例如:調(diào)用新增商品接口,正常的返回結(jié)果1.0是:rsp:items:created:2009-11-17 16:30:50,iid:cbf8d5d64b3fc80b25d21b1e1c88fd41。2.0的返回結(jié)果是:item_add_response:item:iid:699e0a75fcea3966d1d57fc8278c674b,created:2009-10-22 15:08:42。根據(jù)文檔的說明:添加商品成功的返回結(jié)構(gòu)體中包含的數(shù)據(jù)就是這樣。以此種返回結(jié)果舉例,整個(gè)消息體為空的情況是指返回的結(jié)果為: 或item_add_response: 。這個(gè)消息體里面什么東西都沒有,既沒有報(bào)錯(cuò)的信息,也沒有成功

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論