Контролюйте HTTP-взаємодії за допомогою нового методу Http::record() у Laravel

0
Перекладено ШІ
Оригінал: Laravel News
Оновлено: 12 квітня, 2025
Laravel презентує потужний новий інструмент для налагодження HTTP-запитів з методом Http::record(), який дозволяє переглядати реальні HTTP-запити, зберігаючи комунікацію з зовнішніми службами. Досліджуйте, як цей метод може спростити інтеграційне тестування та моніторинг продуктивності сторонніх сервісів у вашій розробці

Laravel додає потужний інструмент для відлагодження HTTP з методом Http::record(), який дозволяє вам перевіряти реальні HTTP запити, зберігаючи при цьому зв'язок зі справжніми зовнішніми сервісами.

use Illuminate\Support\Facades\Http;

// Розпочніть записування HTTP взаємодій
Http::record();

// Виконуйте реальні HTTP запити
Http::get('https://example.com/api/users');
Http::post('https://example.com/api/orders', ['product_id' => 123]); 

// Отримайте доступ до записаних запитів та відповідей
Http::recorded(function ($request, $response) {
    // Аналізуйте деталі запитів та відповідей
});

На відміну від Http::fake(), що блокує зовнішній зв'язок, цей метод забезпечує прозорість реальних запитів, дозволяючи їм виконуватись нормально.

public function testProductApiIntegration()
{
    // Розпочніть записування HTTP взаємодій
    Http::record();

    // Виконайте реальну операцію, яка здійснює API виклики
    $result = $this->app->make(ProductService::class)->syncWithExternalApi();

    // Перевірте успішність операції
    $this->assertTrue($result);

    // Тепер перевірте HTTP взаємодії
    $apiCallCount = 0;
    $allStatusCodesSuccessful = true;

    Http::recorded(function ($request, $response) use (&$apiCallCount, &$allStatusCodesSuccessful) {
        $apiCallCount++;

        // Перевірте статус відповіді
        if ($response->status() >= 400) {
            $allStatusCodesSuccessful = false;
        }

        // Логування взаємодії для відладки
        Log::debug('API Call', [
            'url' => $request->url(),
            'method' => $request->method(),
            'status' => $response->status()
        ]);
    });

    $this->assertGreaterThan(0, $apiCallCount, 'Не було здійснено жодних API викликів');
    $this->assertTrue($allStatusCodesSuccessful, 'Декілька API викликів завершились невдало');
}

Цей підхід є безцінним для інтеграційного тестування, відладки зовнішніх API комунікацій, аудиту використання API та моніторингу продуктивності сторонніх сервісів — і все це без переривання звичайного функціонування вашого застосунку. Забезпечуючи можливість перевірки без модифікацій, метод Http::record() заповнює важливу прогалину між повністю зміненими тестами та неконтрольованими живими API взаємодіями.

Популярні

Logomark Logotype

Nuxt 3 + Laravel Sanctum: Просте та надійне рішення для автентифікації вашого SPA та API

У сучасній веб-розробці аутентифікація є ключовою для захисту додатків і даних користувачів. Дізнайтеся, як модуль nuxt-sanctum-authentication спростить інтеграцію між Nuxt 3 та Laravel Sanctum, забезпечуючи надійний і зручний спосіб реалізації аутентифікації для вашого проєкту

Logomark Logotype

Використання повнотекстового пошуку в Laravel

Laravel пропонує потужні можливості повнотекстового пошуку за допомогою методів whereFullText та orWhereFullText, що дозволяють здійснювати складні запити до бази даних. Дізнайтеся, як реалізувати ефективний пошук для вашого блогу чи системи управління контентом

Logomark Logotype

Створення CLI-додатка за допомогою Laravel та Docker

Зазирніть у світ Laravel, де потужний CLI-фреймворк відкриває нові можливості для розробки командного інтерфейсу. Дізнайтеся, як створити просту утиліту для перевірки акцій, яка працює з Docker, та які переваги це може принести у вашому проєкті!