Laravel Tutorials

Getting to Know the Laravel HTTP Client

Published Updated
Getting to Know the Laravel HTTP Client image

Laravel has an HTTP client that provides a minimal API around the popular Guzzle HTTP client. If you missed the news, let’s walk through some of the basics and features of this new client.

Guzzle is a powerful HTTP client, but the 80% use-case feels complicated when trying to make a simple HTTP GET or getting data back from a JSON API.

Highlight Features

At a glance, here are my favorite features the Laravel Http client provides:

  • Chain-able Request setup
  • Easy access to JSON response data
  • No boilerplate setup to make a simple request
  • Retrying failed requests
  • Convenience methods around authentication headers (basic, digest, bearer)
  • Test fakes and test inspections

For more complicated HTTP client work, you may have to use Guzzle directly, but I suspect that Laravel HTTP has everything that you’d need for most of your projects.

Basic Usage

Here’s the most basic usage you can expect using Laravel’s HTTP client:

use Illuminate\Support\Facades\Http;
 
$response = Http::get('https://laravel.com');
 
// Get the response body
$response->body();
 
$response = Http::get( 'https://api.github.com/users/paulredmond/gists' );
 
// Array of data from the JSON response
$data = $response->json();

Accessing Data

There are a few ways you can access data from JSON responses: the json() method and ArrayAccess:

// Access the response data via `json()`
$data = $response->json();
$data['username'];
 
// Array access from the Response object
Http::get( 'https://api.github.com/users/paulredmond/gists' )['username'];
 
// Return the response object and access directly
$response = Http::get('...');
$response['username'];

Error Handling

One thing that can get confusing and complicated with Guzzle is continually having to wrap calls in a try/catch block, or creating a mini-abstraction on every project to handle this for you.

Laravel catches 400 and 500 level responses and provides methods you can use to determine if anything bad happened during the response:

$response = Http::get( 'https://api.github.com/users/paulredmond/gists' );
 
// Boolean checks on the response
$response->ok() : bool;
$response->clientError(): bool;
$response->successful() : bool;
$response->serverError() : bool;
$response->clientError() : bool;

Timeouts

After reading that Laravel handles client and server exceptions, it wasn’t obvious to me at first that timeouts will cause an exception. The default timeout is rather long; however, Laravel HTTP allows you to define it yourself (in seconds) with the convenient timeout() method:

$response = Http::timeout(5)
->get( 'https://ffdsafdsafdsafas.com' );
 
// Illuminate\Http\Client\ConnectionException:
// cURL error 28: Connection timed out after 5005 milliseconds

Learn More

Check out our tutorial on 5 Tips and Tricks for working with the Laravel HTTP Client and the Laravel 7 HTTP Client Documentation. I’d also encourage you to check out the classes in Illuminate/Http—its quite a simple, elegant API which feels intuitive to use.

Paul Redmond photo

Staff writer at Laravel News. Full stack web developer and author.

Sponsored

laravelcloud logo
Laravel Cloud

Easily create and manage your servers and deploy your Laravel applications in seconds.

Visit Laravel Cloud

The latest

View all →
Laravel AI SDK 1.0 Adds Classification and Tool Approvals image

Laravel AI SDK 1.0 Adds Classification and Tool Approvals

Read article
Tagged Memoized Cache and Model Refreshes in Laravel 13.33 image

Tagged Memoized Cache and Model Refreshes in Laravel 13.33

Read article
Laravel Live Denmark 2026 Talks Are Now on YouTube image

Laravel Live Denmark 2026 Talks Are Now on YouTube

Read article
Live Stream: Building a Social Network in PHP in 48 Hours image

Live Stream: Building a Social Network in PHP in 48 Hours

Read article
Health for Laravel: Kubernetes Probes and Prometheus Metrics image

Health for Laravel: Kubernetes Probes and Prometheus Metrics

Read article
Fast Excel 5.x Adds Streaming Imports and Safer Exports image

Fast Excel 5.x Adds Streaming Imports and Safer Exports

Read article