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