TGViewer
Заметки разработчика Заметки разработчика @dev_notes_ru · 458 subscribers
Post #1680 289
В Pull Request #58379 для ветки 12.x было добавлено полезное улучшение в HTTP-клиент Laravel. Теперь в объекте Response можно устанавливать флаги для декодирования JSON.

💡 В чём суть

Раньше метод $response->json() просто парсил JSON с настройками PHP по умолчанию. Это могло приводить к скрытым проблемам:

Тихие ошибки: json_decode() по умолчанию молча возвращает NULL при ошибке в структуре JSON, что усложняет отладку.
Потеря данных: PHP может некорректно обрабатывать очень большие числа (например, transaction_id или Snowflake ID из Discord/X), что ведёт к повреждению данных.

Как теперь можно решить
В метод json() добавлен параметр flags. Это позволяет передавать стандартные константы PHP для управления парсингом.

❗️ Сценарии использования

✅ Защита от потери больших чисел (часто встречается в платежных системах и соц. сетях):

$data = $response->json(flags: JSON_BIGINT_AS_STRING);
Большие целые числа будут возвращены как строки, что гарантирует их сохранность.


✅ Строгий режим для отладки:

$data = $response->json(flags: JSON_THROW_ON_ERROR);


При малейшей ошибке в JSON будет выброшено исключение, а не возвращён NULL.

✅ Комбинированный режим для продакшена:

$data = $response->json(
flags: JSON_BIGINT_AS_STRING | JSON_THROW_ON_ERROR
);


И данные целы, и ошибки не пройдут незамеченными.

⚡️ Что изменилось для разработчика

Раньше для такого контроля нужно было вручную парсить $response->body(). Теперь всё решается одним параметром встроенного метода.

Небольшое изменение, которое устраняет целый класс проблем при интеграции с реальными, неидеальными API.

📱 @dev_notes_ru

#Laravel #Laravel12
GitHub [12.x] Allow setting flags for decoding json in the Http Client's Response by cosmastech · Pull Request #58379 · laravel/framework I really want to be able to specify that when I'm parsing JSON from a response, it should throw when receiving invalid JSON. How to use Call-site $response = Http::get('https://some...
  • 🔥 2
More from @dev_notes_ru
  1. Apr 27, 2026Уникальный индекс при мягком удалении: решаем проблему дубликатов При использовании мягког…
  2. Apr 23, 2026Статические переменные в PHP: использование static внутри функций По данным исследования E…
  3. Apr 21, 2026Валидация массивов в Laravel без N+1: Form Request как построитель контекста Применение пр…
  4. Apr 13, 2026JSON в браузере: import или fetch — руководство по выбору Спойлер: import из JSON — это не…
  5. Apr 6, 2026Проксирование fetch() в серверном JavaScript Стандарт Fetch не специфицирует проксирование…
  6. Apr 2, 2026Taskfile: Когда пора отказаться от Makefile (а когда — нет) Makefile — инструмент с почти…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →