Уніфікуйте налаштування HTTP-клієнта за допомогою методу globalOptions у Laravel

Перекладено ШІ
Оригінал: Laravel News
Оновлено: 30 квітня, 2025
Завдяки методу globalOptions Laravel спрощує налаштування HTTP-клієнта, пропонуючи централізоване управління конфігурацією для вашого додатку. Дізнайтеся, як це нововведення допомагає зменшити дублювання коду та забезпечити єдині стандарти при спілкуванні з численними зовнішніми API

Laravel вводить метод globalOptions, який спрощує налаштування HTTP-клієнта в усьому застосунку. Ця функція дозволяє визначити стандартну поведінку клієнта, зменшуючи повторення коду та зберігаючи узгодженість.

Коли ви працюєте з кількома зовнішніми API, часто виникає необхідність повторно налаштовувати таймстри, заголовки та інші параметри. Тепер HTTP-клієнт Laravel дозволяє встановлювати ці налаштування глобально, забезпечуючи єдину базу для всіх запитів:

use Illuminate\Support\Facades\Http;

// Встановіть глобальні опції в сервісному провайдері
Http::globalOptions([
    'timeout' => 5,
    'connect_timeout' => 2,
]);

Після налаштування ці опції автоматично застосовуються до всіх HTTP-запитів, виконаних через HTTP-клієнт Laravel, якщо їх не переоприділити для окремих запитів.

Цей підхід особливо корисний для застосунків, які взаємодіють із багатьма сторонніми сервісами. Ось як ви можете реалізувати глобальну конфігурацію у сервісному провайдері:

<?php

namespace App\Providers;

use Illuminate\Support\Facades\Http;
use Illuminate\Support\ServiceProvider;

class AppServiceProvider extends ServiceProvider
{
    /**
     * Ініціалізація послуг у застосунку.
     */
    public function boot(): void
    {
        Http::globalOptions([
            // Встановіть розумні таймстри
            'timeout' => 8,
            'connect_timeout' => 3,

            // Додайте стандартні заголовки
            'headers' => [
                'User-Agent' => 'ShoppingPortal/2.1',
                'Accept' => 'application/json',
            ],

            // Налаштуйте стандартну поведінку повторних спроб
            'retry' => 2,
            'retry_delay' => 150,
        ]);
    }
}

Хоча глобальні налаштування створюють стандарти за замовчуванням, ви можете переоприділити конкретні опції, коли це необхідно:

// Використовує глобальні опції та специфічні для цього запиту
Http::withToken('payment-gateway-token')
    ->post('https://payments.example.com/process', [
        'amount' => 99.95,
        'currency' => 'USD'
    ]);

// Переоприділити тайм-аут лише для цього запиту
Http::timeout(25)
    ->get('https://inventory.example.com/stock-check');

Зверніть увагу, що виклик globalOptions кілька разів повністю замінює попередні налаштування, а не об'єднує їх. Налагодьте налаштування у вашому сервісному провайдері так, щоб усі глобальні опції були в одному виклику конфігурації для максимальної ясності та передбачуваності.