HTTP Client for PHP: Guzzle

Online Python Trainer for Beginners

Learn Python easily without overwhelming theory. Solve practical tasks with automatic checking, get hints in Russian, and write code directly in your browser — no installation required.

Start Course

What is Guzzle?

Guzzle is a powerful and popular PHP library for working with HTTP requests. It provides a convenient interface for sending GET, POST, PUT, DELETE, and other requests, handling responses, and managing sessions. Guzzle is considered the de facto standard for working with HTTP in the PHP community.

Why is Guzzle needed?

Unlike built-in PHP functions such as file_get_contents() or curl, Guzzle offers an object-oriented approach, automatic cookie management, stream support, asynchronous requests, and convenient error handling. The library is ideal for integrating with REST APIs, web scraping, file downloads, and working with OAuth.

Installation

Installation is done via Composer:

composer require guzzlehttp/guzzle

Make sure you have PHP 8.1 or higher installed (for the latest versions).

Main Features

  • Sending requests: GET, POST, PUT, DELETE, PATCH, and other methods.
  • Streaming data: working with large files without loading them into memory.
  • Asynchronous requests: sending multiple requests in parallel using Promises.
  • Middleware: intercepting and modifying requests/responses (logging, caching, authentication).
  • Error handling: detailed exceptions for different HTTP statuses.
  • Cookie sessions: automatic saving and sending of cookies.

Code Example

require 'vendor/autoload.php';

use GuzzleHttp\\Client;

$client = new Client([ 'base_uri' => 'https://api.example.com', 'timeout' => 10.0,]);

// GET request with parameters$response = $client->request('GET', '/users', [ 'query' => ['page' => 1, 'limit' => 10]]);

echo $response->getStatusCode(); // 200echo $response->getBody(); // JSON response

// POST request with JSON$response = $client->post('/users', [ 'json' => [ 'name' => 'John', 'email' => 'john@example.com' ]]);

// Asynchronous request$promise = $client->getAsync('/data');$promise->then( function ($response) { echo 'Done: ' . $response->getStatusCode(); }, function ($exception) { echo 'Error: ' . $exception->getMessage(); });$promise->wait();

When to use Guzzle?

Guzzle is recommended for any project that requires interaction with external HTTP services: microservice architecture, clients for REST APIs (GitHub, Stripe, Telegram), web page parsing, data download automation. If you are writing in PHP and working with HTTP — Guzzle should be your first choice.

Conclusion

Guzzle is a mature, well-documented, and actively maintained library. It simplifies working with HTTP, making code cleaner and more reliable. Install it via Composer and start using it today.

Recommendations