Using Laravel's fluent Method for HTTP Response Transformations
Last updated on by Harris Raftopoulos

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.