Чи отримували ви коли-небудь звіт про помилку або переглядали Sentry і знаходили обрізане повідомлення про виняток HTTP-клієнта, яке важко зрозуміти? За замовчуванням HTTP-відповіді обрізаються, що може приховувати важливі деталі про причини невдачі запиту або те, що сталося:
HTTP request returned status code 422:
{"error":{"code":422,"message":"The Request can not be completed because the provided request contains invalid data. Key at 'cus (truncated...)
Починаючи з Laravel 11.35, ви можете контролювати цю поведінку завдяки двом новим зручним методам, які можна додати до файлу bootstrap/app.php
вашого додатка:
// bootstrap/app.php
use Illuminate\Http\Client\RequestException;
return Application::configure(basePath: dirname(__DIR__))
// ...
->withExceptions(function (Exceptions $exceptions) {
$exceptions->dontTruncateRequestExceptions();
// Або ...
$exceptions->truncateRequestExceptionsAt(260);
})->create();
Тепер, коли виникає виняток HTTP-клієнта, він більше не буде обрізатися, або, якщо ви все ж хочете обрізати, можете встановити бажану довжину. Звичайно, ви все ще можете обробляти винятки HTTP-клієнта і реєструвати інформацію про них на свій розсуд:
try {
$response = Http::throws()->get('https://api.example.com/some-error');
// ...
} catch (\Illuminate\Http\Client\RequestException $e) {
Log::error('HTTP Error', [
// Повідомлення буде обрізане (або ні) залежно від ваших налаштувань.
'message' => $e->getMessage(),
'response' => $e->response->json(),
'status' => $e->response->status(),
// ...
]);
}
Більше інформації про роботу з винятками в HTTP-клієнті Laravel ви можете знайти в документації Laravel, яка містить усі відомості про обробку умовних помилок і налаштування обрізки.
Дякуємо Стіву Бауману за реалізацію цієї можливості у Pull Request #53734 в рамках Laravel 11.35.0!