Налаштуйте обробку виключень запитів HTTP-клієнта.

Перекладено ШІ
Оригінал: Laravel News
Оновлено: 18 грудня, 2024
Вас коли-небудь розчаровувало отримання звіту про помилку в Laravel, де важливі деталі були відсутні? Дізнайтеся, як нові методи в Laravel 11.35 дозволяють контролювати обробку HTTP-виключень, забезпечуючи доступ до всієї важливої інформації про помилки

Чи отримували ви коли-небудь звіт про помилку або переглядали 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!