Laravel enhances API interactions with the new fluent() method on HTTP Client responses. This feature provides type-safe access to response data, streamlining how you work with external APIs.
The method converts responses into fluent objects with type-specific accessors:
$response = Http::get('https://api.example.com/products/1')->fluent();$price = $response->float('price'); // 420.69$colors = $response->collect('colors'); // Collection(['red', 'blue'])$onSale = $response->boolean('on_sale'); // true$stock = $response->integer('current_stock'); // 69
Here's an implementation in a weather forecasting service:
class WeatherService{ protected string $apiKey; protected string $baseUrl = 'https://weather-api.example.com'; public function __construct(string $apiKey) { $this->apiKey = $apiKey; } public function getLocationForecast(string $city) { $response = Http::withToken($this->apiKey) ->get("{$this->baseUrl}/forecast", [ 'city' => $city, 'units' => 'metric' ]) ->throw() ->fluent(); return [ 'location' => [ 'city' => $response->string('city'), 'country' => $response->string('country'), 'coordinates' => $response->collect('coordinates')->toArray() ], 'current' => [ 'temperature' => $response->float('current.temperature'), 'feels_like' => $response->float('current.feels_like'), 'humidity' => $response->integer('current.humidity'), 'wind_speed' => $response->float('current.wind.speed') ], 'forecast' => $response->collect('forecast')->map(function ($day) { return [ 'date' => Carbon::parse($day['date']), 'high' => (float) $day['high'], 'low' => (float) $day['low'], 'condition' => $day['condition'] ]; }) ]; }}
The fluent() method greatly improves code quality by eliminating type conversion boilerplate while providing safer access to nested response properties.