Skip to content
Laravel Zero — home
HTTP Client

Documentation

HTTP Client

An expressive HTTP client for your console application

On this page

Introduction#

Console applications frequently talk to APIs. The http component brings Laravel's expressive, minimal API around the Guzzle HTTP client to your application, allowing you to quickly make outgoing HTTP requests.

Installation#

You may install the http component using the app:install Artisan command:

bash
php application app:install http

Making Requests#

To make requests, you may use the get, post, put, patch, and delete methods provided by the Http facade:

php
use Illuminate\Support\Facades\Http;

$response = Http::get('https://api.themoviedb.org/3/movie/popular');

$response = Http::post('https://example.com/movies', [
    'title' => 'The Empire Strikes Back',
]);

The get method returns an instance of Illuminate\Http\Client\Response, which provides a variety of methods that may be used to inspect the response:

php
$response->json();
$response->status();
$response->successful();
$response->failed();

Of course, the full fluent API is available — headers, authentication, retries, timeouts, and concurrent requests:

php
$response = Http::withToken($token)
    ->timeout(10)
    ->retry(3, 100)
    ->get('https://api.themoviedb.org/3/movie/popular');

Testing#

The HTTP client allows you to fake responses, which is invaluable when testing a command that talks to a third-party API:

php
Http::fake([
    'api.themoviedb.org/*' => Http::response(['results' => []], 200),
]);

$this->artisan('movies:import')->assertSuccessful();

Full details on using the HTTP client are available in the HTTP client documentation on the Laravel website.

Spotted a mistake? Edit this page on GitHub.