一、問題
調(diào)用了后端提供的一個接口,在兩個不同地方用了,結(jié)果在一個地方正常獲取到了數(shù)據(jù),一個地方一直在瀏覽器控制臺(console)報錯 500。
二、解決思路
1.檢查代碼
1)查看代碼在 兩個 地方的書寫是否一致。
2)查看代碼中傳遞給 接口 的參數(shù)是否正確
2.檢查nextwork中的請求
1)在瀏覽器的開發(fā)者工具中(在瀏覽器頁面,按F12即可彈出),點(diǎn)擊 network菜單項(xiàng)
2)在network界面點(diǎn)擊 Fetch/XHR 菜單(專門用于存放 接口)
出現(xiàn)如圖1所示的界面:
注:此處(Fetch/XHR)的 status是瀏覽器的狀態(tài)碼
3.在圖1所示的界面中,點(diǎn)擊你現(xiàn)在需要使用(調(diào)試)的接口,此處以findAllRoom接口為例。
1)出現(xiàn)如圖2所示的界面:
2)如圖2所示,界面右側(cè),默認(rèn)選中 headers菜單欄,下方有四項(xiàng)數(shù)據(jù)。
General:包含請求的url地址,請求的方式、請求的狀態(tài)等
Response Headers:響應(yīng)頭中的內(nèi)容
Request Headers:請求頭中的內(nèi)容
Query String Parameters:請求數(shù)據(jù)時傳遞的參數(shù)(你在代碼中實(shí)際給 接口 傳遞的數(shù)據(jù)及格式)
需要仔細(xì)檢查此處 傳遞的參數(shù)及格式 是否正確。(雖然代碼中寫了一樣的參數(shù),但有可能因?yàn)槭褂?別人的組件 或 第三方庫 導(dǎo)致傳遞的參數(shù)或參數(shù)的格式 可能不正確。----我就是因?yàn)槭褂脛e人的組件 傳遞的參數(shù)格式 不正確,一直獲取不到數(shù)據(jù),還報錯 500.
3)點(diǎn)擊 preview 菜單項(xiàng),展開數(shù)據(jù),可以查看返回的數(shù)據(jù)以及服務(wù)器返回的狀態(tài) status。如圖3所示。
注:此處(preView)的狀態(tài)碼 status是 服務(wù)器端 返回的狀態(tài)碼
4)如果 代碼中的參數(shù) 和 headers中的參數(shù) 都正確,則是后端的接口有問題,可以和后端商討。
三、總結(jié)
1.調(diào)用接口有問題:主要可以檢查 代碼 和 network 中傳遞的參數(shù) 和 參數(shù)的格式 是否正確。
2.瀏覽器狀態(tài)碼status 和 服務(wù)器狀態(tài)碼status 是不同的。
瀏覽器狀態(tài)碼:標(biāo)志請求是否正確
服務(wù)器狀態(tài)碼:標(biāo)志響應(yīng)是否正確
3.當(dāng)用promise等 捕獲錯誤時,是對響應(yīng)錯誤的捕獲,所以如果要查找這個錯誤,要在 響應(yīng)(response)中去查看(preview菜單項(xiàng))。在 Fetch/XHR中看到的都是 請求的狀態(tài)碼。
以上提到的console中報錯500,在Fetch/XHR中是看不到的,在preview菜單項(xiàng)中才能看到。