PHP library for formatting Guzzle requests and responses to HTTP messages.
Install this library directly with Composer:
composer require jhoffland/guzzle-formatter
Add --dev
if this library is not needed in a production environment.
use GuzzleFormatter\RequestFormatter;
use GuzzleFormatter\ResponseFormatter;
use GuzzleHttp\Client;
use GuzzleHttp\Psr7\Request;
$request = new Request('GET', 'https://github.com/jhoffland/guzzle-formatter');
echo (new RequestFormatter())->http($request); // Results in the formatted HTTP request message.
$response = (new Client())->send($request);
echo (new ResponseFormatter())->http($response); // Results in the formatted HTTP response message.
Logging all requests performed and/or responses received by a Guzzle client, using middleware.
The HTTP request and/or response messages are written to the file, specified when creating the HttpFormatterMiddleware
class instance.
use GuzzleFormatter\Middleware\HttpFormatterMiddleware;
use GuzzleHttp\Client;
use GuzzleHttp\HandlerStack;
$formatterMiddleware = new HttpFormatterMiddleware('/path/to/output-file.txt');
$handlerStack = HandlerStack::create();
$handlerStack->after('prepare_body', $formatterMiddleware->requests(), 'http_request_formatter');
$handlerStack->after('prepare_body', $formatterMiddleware->responses(), 'http_response_formatter');
$client = new Client([
'handler' => $handlerStack,
]);
$client->get('https://github.com/jhoffland/guzzle-formatter');
Available when creating an instance of RequestFormatter
& ResponseFormatter
.
Available for when formatting an HTTP message with RequestFormatter
& ResponseFormatter
& when creating an instance of HttpFormatterMiddleware
.
The headers seen as sensitive can be found in the array Formatter::SENSITIVE_HEADERS
.
This library is tested with PHP 7.4, 8.0 and 8.1.
Check the composer.json
file for the supported package versions.
Feel free to add support for additional versions to this library.
Feel free to contribute to this library. Contribute by forking the GitHub repository and opening a pull request.
When opening a pull request, please make sure that:
- The pull request has a clear title;
- The pull request does not consist of too many (unnecessary/small) commits;
- The StyleCI analysis pass;
- The PHPUnit tests pass.
- Add test for formatting request when making an request to an URL without path (e.g. to https://google.com instead of to https://google.com/).
- Add test for hiding and not-hiding sensitive headers when using the
HttpFormatterMiddleware
. - Add cURL formatter.