Stories

Detail Return Return

這些調試API技巧你熟悉嗎? - Stories Detail

通常,我們在調試第三方提供的API時,有時候並沒那麼順暢,甚至可能本身就是API服務有問題,但是需要提供你結論的"依據"。下面整理了一些API調試技巧,也方便你甩鍋

簡單來説分為以下兩點

  • 檢測狀態信息
  • 檢測返回數據

接下來用接口管理工具Apifox來演示如何運用接口可視化工具來定位接口問題

1 檢測接口狀態碼

當我們對某個API發起請求時,API所在的服務器會返回一個HTTP狀態碼,通過這個狀態碼我們可以瞭解到API請求的狀態。常見的狀態碼 比如:401代表不具備訪問權限; 500代表服務器出錯

通過狀態碼來檢測接口是否正常調用,這也是調試接口的第一要素。

下面是一些常用的接口狀態碼報錯

  • 400表示請求參數錯誤,我們可以查找是否存在語法錯誤,如輸入錯誤或畸形的JSON正文。
  • 401表示未經授權,我們需要確實是否有訪問對應目標資源的有效認證憑證,同時確認沒有語法問題。
  • 403表示服務器拒絕請求,此時可以檢查我們具有的權限和範圍,以確保能被授權訪問資源。
  • 418表示我就是個杯具(I 'm a Teapot),可能表示請求是提供者不想處理的請求,例如自動查詢。
  • 429表示太多的請求,此時我們可以檢查文檔,以便了解使用頻率限制或着稍後再試。

這裏以Apifox接口管理工具調試為例,支持的校驗響應,可以自動校驗接口響應狀態碼是否符合我們的預期

2 進階調試分析

這裏分享幾個常見的請求API場景,也是你可能會掉入的坑:

畸形的JSON

當你在發送JSON時會犯一些常見的錯誤。在JSON字符串中,單引號無效,因此請確保將字符串和屬性名用雙引號括起來。此外,JSON不支持註釋,所以要麼儘量簡化,要麼根本不添加它們。

Content type頭

Content- type和Accept頭有助於在客户端和服務器之間進行內容協商。Content-type請求頭告訴服務器,客户端發送的信息類型。而Accept請求頭告訴服務器,客户機可以理解什麼類型的內容。一些API需要特定的請求頭,並且只處理特定的內容類型。

比如: 根據Accept header 返回對應格式圖片

下面是以Apifox官方推出的 Apifox Echo中的一個例子作為演示

Apifox Echo 是 Apifox 官方提供的 簡單的接口請求和返回數據服務

在線調試連接:https://www.apifox.cn/apidoc/...

序列化數據

REST API常見的以JSON的形式存儲和發送數據。而為了保證正確傳輸數據,我們可以使用JSON.stringify()對數據進行編碼,及JSON.parse()對其進行解碼。此外,服務器可能要求您設置一個application/json類型的Content-Type頭。進一步檢查後,如果你看到返回值出現像[object object]或Unexpected token,表明我們非法的進行了序列化和反序列化。

類型轉換

在準備發送請求或解析響應時,可以將值從一種類型轉換為另一種類型。根據編程語言的不同,對字符串執行數學計算可能會導致失敗,但當我們將字符串轉換為數字時,就可以處理轉換後的數據了。

比如:我們調試的接口響應返回的是base64格式,這時候我們想解析這個數據的原數數據,我們可以在Apifox的後置操作中添加腳本,通過定義腳本對數據進行轉換

如下所示

提取信息

使用JSON.parse()反序列化JSON響應後,就可以使用點或括號符號訪問所有信息。如果您試圖訪問一個複雜結構中的深層嵌套信息,您可能需要一步一步地將其分解,以精確地引用該信息,並確保您不會試圖使用到一些未定義的東西中。

身份驗證與授權

身份驗證是指驗證用户的身份,而授權則確認用户擁有訪問資源的權限。如果請求中包含了適當的授權頭,但仍然不能訪問資源,請仔細檢查與憑據相關的權限和作用域。

文章參考:
https://stackoverflow.blog/20...

Add a new Comments

Some HTML is okay.