讀取 API 回應而不失去理智
為什麼你的 API 回應看起來像一堆亂碼?學習 JSON 格式化和美化的方法,掌握縮排、排序和驗證技巧,讓複雜的 JSON 資料一目了然。
你打了一個 API 端點。回應回來了。它看起來像這樣:
{"users":[{"id":1,"name":"John","email":"john@example.com","settings":{"notifications":true,"theme":"dark","language":"en"}},{"id":2,"name":"Jane","email":"jane@example.com","settings":{"notifications":false,"theme":"light","language":"es"}}],"meta":{"total":2,"page":1}}
祝你好運找到你需要的那個欄位。
這就是 90% 的 API 除錯看起來的樣子。壓縮的 JSON,沒有換行,所有東西都擠在一起。技術上正確。但也無法閱讀。
只要格式化它
拿那面文字牆,貼到 JSON 格式化工具,突然間:
{
"users": [
{
"id": 1,
"name": "John",
"email": "john@example.com",
"settings": {
"notifications": true,
"theme": "dark",
"language": "en"
}
}
]
}
同樣的資料。實際上可讀了。你可以看到結構,找到巢狀欄位,發現缺失的值。
常見除錯情境
「API 回傳錯誤但我不知道為什麼」
格式化錯誤回應。通常有一個巢狀的 message 或 details 欄位埋在裡面,準確解釋了什麼出錯。你只是在壓縮版本中看不到它。
「我需要比較兩個回應」
格式化兩者,然後使用差異工具。壓縮的 JSON 無法差異比較——所有東西都顯示為已更改,因為換行不同。
「這甚至是有效的 JSON 嗎?」
將它貼到格式化工具中。如果它無效,你會得到一個指向問題的錯誤。缺少逗號、額外的括號、未轉義的引號——格式化工具會告訴你。
使用 JWT
JWT(JSON Web Token)只是 base64 編碼的 JSON。當你看到這樣的東西:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ
那不是加密的。只是編碼的。解碼它,你會看到實際的有效載荷——使用者 ID、到期時間、權限,token 包含的任何東西。
對於除錯認證問題很有用。「為什麼我得到 403?」解碼 token,檢查它是否過期,驗證聲明是否符合你的期望。
API 回應中的 Base64
有時 API 回傳 base64 編碼的資料。檔案內容、圖片、加密的資料塊。如果你需要看看裡面實際上是什麼,解碼它。
常見於:
- 電子郵件 API(附件以 base64 編碼)
- 圖片上傳(data URI 是 base64)
- 舊版 SOAP 服務(因為 SOAP)
API 工作技巧
使用瀏覽器開發工具。 Network 分頁顯示請求和回應。大多數瀏覽器可以自動美化列印 JSON 回應。
儲存範例回應。 當 API 正常工作時,儲存格式化的副本。當它損壞時,你可以與工作版本比較。
檢查內容類型。 有時看起來像 JSON 的實際上是包含 JSON 的字串。你可能需要解析兩次。
注意編碼問題。 Unicode 字符可能會導致問題。如果你看到 \u0000 代碼,那是轉義的 Unicode——通常沒問題,但有時表示上游的編碼問題。
API 除錯主要是關於清楚地看到資料。格式化你的 JSON,解碼你的 token,你會花更少的時間盯著壓縮的資料塊。