阅读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字段埋在那里,准确解释出了什么问题。你只是在压缩版本中看不到它。
"我需要比较两个响应"
格式化两个,然后使用diff工具。压缩的JSON不可能diff——所有东西都显示为已更改,因为换行不同。
"这甚至是有效的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,你会花更少时间眯着眼睛看压缩的块。