Guzzle Symfony Bundle
This is a Symfony bundle that integrates Guzzle for easier use., (*1)
, (*2)
Installation
You can use Composer to install the extension to your project:, (*3)
composer require caciobanu/guzzle-bundle
Then create a minimal config file caciobanu_guzzle.yml
in config/packages/
:, (*4)
caciobanu_guzzle:
clients:
google:
base_uri: 'https://google.com'
A complete configuration looks like:, (*5)
caciobanu_guzzle:
clients:
google:
client_class: 'Your\Client' # You must extend 'GuzzleHttp\Client' which is the default value.
base_uri: 'https://google.com'
logging: true # Enable logging. Default value: false.
options: # See http://docs.guzzlephp.org/en/stable/request-options.html for all available options.
timeout: 30
headers:
'User-Agent': 'Test Agent'
Usage
Using services in controller:, (*6)
/** @var \GuzzleHttp\Client $client */
$client = $this->get('caciobanu_guzzle.client.google');
$response = $client->get('/');
Adding Guzzle middleware
Adding a Guzzle middleware is a two step process:, (*7)
- Create a new class:
<?php
namespace App\Guzzle\Middleware;
use Caciobanu\Symfony\GuzzleBundle\Middleware\BeforeRequestMiddlewareInterface;
use Psr\Http\Message\RequestInterface;
class MyMiddleware implements BeforeRequestMiddlewareInterface
{
public function __invoke(RequestInterface $request): RequestInterface
{
// Do something with the request
return $request;
}
}
- Create a Symfony service like so:
# config/services.yaml
services:
App\Guzzle\Middleware\MyMiddleware:
tags:
- { name: 'caciobanu_guzzle.middleware', client: 'google' }
There are three middleware interfaces that can be implemented:
- Caciobanu\Symfony\GuzzleBundle\Middleware\BeforeRequestMiddlewareInterface - marks middleware to be called before sending the request
- Caciobanu\Symfony\GuzzleBundle\Middleware\AfterResponseMiddlewareInterface - marks middleware to be called after the response is received
- Caciobanu\Symfony\GuzzleBundle\Middleware\OnErrorMiddlewareInterface - marks middleware to be called when an errors occurs
- Caciobanu\Symfony\GuzzleBundle\Middleware\RetryMiddlewareInterface - offers the possibility to retry requests, (*8)
Credits
This library is developed by Catalin Ciobanu., (*9)
License
, (*10)