Використання Fluent для роботи з HTTP клієнтськими відповідями в Laravel

Перекладено ШІ
Оригінал: Laravel News
Оновлено: 13 грудня, 2024
Досліджуйте нові можливості Laravel 11.35, зокрема, як зручно перетворювати відповіді HTTP-клієнта на елементи класу Fluent. Чи готові ви вивчити прості покрокові методи для роботи з даними та отримати більше контролю над вашими проєктами

У Laravel 11.2.0 з'явилася fluent() допомога, яка спрощує конвертацію масивів у Fluent інстанції. Тепер, починаючи з Laravel 11.35, у нас є зручний метод для перетворення відповіді HTTP-клієнта на fluent інстанцію:

use Illuminate\Support\Facades\Http;

$response = Http::get('https://jsonplaceholder.typicode.com/posts')->fluent();

$response->get('0.title'); // sunt aut facere...
$response->collect()->pluck('title'); // ["sunt aut facere...", "qui est esse", ...]

Ще одна корисна можливість — перетворення JSON-даних у конкретні типи. Наприклад, можна конвертувати рядкову дату в Carbon інстанцію:

use Illuminate\Support\Facades\Http;

$response = Http::get('https://api.chucknorris.io/jokes/random')->fluent();

$response->date('created_at');
$response->date('updated_at');

/*
Illuminate\Support\Carbon @1578231741 {#261 ▼ // routes/web.php:9
  date: 2020-01-05 13:42:21.455187 UTC (+00:00)
}
*/

Fluent також підтримує інші корисні типи, як-от boolean, enum, масиви enum та інші. Один із моїх улюблених способів — використовувати знайомі методи, як-от only і except, для отримання конкретних даних:

use Illuminate\Support\Facades\Http;

$response = Http::get('https://api.chucknorris.io/jokes/random')->fluent();

$response->except('categories');
/*
array:6 [▼ // routes/web.php:9
  "created_at" => "2020-01-05 13:42:19.897976"
  "icon_url" => "https://api.chucknorris.io/img/avatar/chuck-norris.png"
  "id" => "KqoQdIJdSE2ezokPmHSvdw"
  "updated_at" => "2020-01-05 13:42:19.897976"
  "url" => "https://api.chucknorris.io/jokes/KqoQdIJdSE2ezokPmHSvdw"
  "value" => "Одного вечора Чак Норріс поїв чилі на вечерю. А наступного дня стався Великий Вибух."
]
*/

$response->only('id', 'url', 'value');

# Дізнайтеся більше

Рекомендую ознайомитися з класом Fluent у документації Laravel API. Fluent використовує trait InteractsWithData, що містить безліч зручних методів для роботи з даними Fluent.