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

0
Перекладено ШІ
Оригінал: 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 кілька разів повністю замінює попередні налаштування, а не об'єднує їх. Налагодьте налаштування у вашому сервісному провайдері так, щоб усі глобальні опції були в одному виклику конфігурації для максимальної ясності та передбачуваності.

Популярні

Logomark Logotype

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

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

Logomark Logotype

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

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

Logomark Logotype

Перетворення даних у типобезпечні DTO за допомогою пакету Data Model

Досліджуйте новий пакет Data Model для PHP, який спрощує процес гідратації об'єктів без зайвих складнощів! Дізнайтеся, як впровадження типобезпечних об'єктів може революціонізувати ваш підхід до розробки, читаючи нашу статтю