Чтение API-ответов, не сходя с ума
Почему твои API-ответы выглядят как мусор и как их на самом деле читать.
Ты отправляешь запрос к API endpoint. Приходит ответ. Он выглядит так:
{"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 невозможно сравнивать — всё показывается как изменённое, потому что переносы строк разные.
"Это вообще валидный JSON?"
Вставь его в форматер. Если невалидный, ты получишь ошибку, указывающую на проблему. Отсутствующая запятая, лишняя скобка, неэкранированная кавычка — форматер скажет тебе.
Работа с JWT
JWT (JSON Web Tokens) — это просто base64-кодированный JSON. Когда ты видишь что-то вроде:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ
Это не зашифровано. Это просто закодировано. Декодируй это, и ты увидишь реальную полезную нагрузку — ID пользователя, время истечения, права, что бы ни содержал токен.
Полезно для отладки проблем с аутентификацией. "Почему я получаю 403?" Декодируй токен, проверь, не истёк ли он, проверь, соответствуют ли утверждения тому, что ты ожидаешь.
Base64 в API-ответах
Иногда API возвращают данные в кодировке base64. Содержимое файлов, изображения, зашифрованные блобы. Если тебе нужно увидеть, что там на самом деле, декодируй.
Часто встречается в:
- Email API (вложения приходят в кодировке base64)
- Загрузка изображений (data URI это base64)
- Унаследованные SOAP-сервисы (потому что SOAP)
Советы для работы с API
Используй инструменты разработчика браузера. Вкладка Network показывает запросы и ответы. Большинство браузеров могут автоматически красиво печатать JSON-ответы.
Сохраняй примеры ответов. Когда API работает правильно, сохрани отформатированную копию. Когда он ломается, ты можешь сравнить с рабочей версией.
Проверяй content type. Иногда то, что выглядит как JSON, на самом деле строка, содержащая JSON. Тебе может понадобиться парсить дважды.
Следи за проблемами кодировки. Unicode-символы могут вызвать проблемы. Если ты видишь коды \u0000, это экранированный Unicode — обычно нормально, но иногда указывает на проблемы кодировки выше по цепочке.
Отладка API в основном о том, чтобы ясно видеть данные. Форматируй свой JSON, декодируй свои токены, и ты будешь тратить меньше времени, щурясь на минифицированные блобы.