osirisgate / http-client
Provides powerful and flexible methods to fetch HTTP resources synchronously or asynchronously.
Requires
- php: >=8.2
- osirisgate/core: 1.0.*
- symfony/http-client: 7.3.*
Requires (Dev)
- friendsofphp/php-cs-fixer: dev-master
- phpstan/phpstan: 2.1.x-dev
- phpunit/phpunit: 12.2.x-dev
- symfony/var-dumper: 7.3.x-dev
This package is not auto-updated.
Last update: 2025-05-14 19:07:09 UTC
README
Lightweight, elegant HTTP client built with modern PHP. Provides an expressive and extensible wrapper to perform REST API calls using clean, typed interfaces. Aligned with Osirisgate Core standards.
๐ฆ Installation
composer require osirisgate/http-client
โ Requirements
- PHP 8.2 or higher
- osirisgate/core
โจ Features
- Simple and expressive methods for HTTP verbs:
GET
,POST
,PUT
,PATCH
,DELETE
- Structured exception system implementing
ExceptionInterface
- Response abstraction through
ResponseInterface
- Optional support for:
- Query parameters (
filters
) - Custom headers
- Low-level request options
- Query parameters (
๐งโ๐ป How to use it ?
โ Send a GET request
use Osirisgate\Component\HttpClient\Request\Http; $response = Http::get('https://jsonplaceholder.typicode.com/posts'); $data = $response->toArray();
๐ With query parameters
$response = Http::get( 'https://jsonplaceholder.typicode.com/comments', filters: ['postId' => 1] ); $comments = $response->toArray();
โ๏ธ Create a resource (POST)
$response = Http::post( 'https://jsonplaceholder.typicode.com/posts', payload: [ 'title' => 'foo', 'body' => 'bar', 'userId' => 1 ] );
๐ Update a resource (PUT / PATCH)
// PUT (Full update) $response = Http::put('https://jsonplaceholder.typicode.com/posts/1', payload: [ 'id' => 1, 'title' => 'new title', 'body' => 'updated content', 'userId' => 1 ]); // PATCH (Partial update) $response = Http::patch('https://jsonplaceholder.typicode.com/posts/1', payload: [ 'title' => 'patched title' ]);
โ Delete a resource
$response = Http::delete('https://jsonplaceholder.typicode.com/posts/1');
โ๏ธ Advanced Configuration
๐งพ Custom headers
$response = Http::get( 'https://api.example.com/data', headers: [ 'Authorization' => 'Bearer TOKEN', 'X-Custom-Header' => 'value' ] );
๐ Request options
$response = Http::get( 'https://api.example.com/data', options: [ 'timeout' => 5, 'verify_peer' => false ] );
๐จ Error Handling
Any HTTP client or server error will throw a typed exception implementing ExceptionInterface
.
use Osirisgate\Core\Exception\ExceptionInterface; use Osirisgate\Component\HttpClient\Request\Http; try { $response = Http::get('https://api.example.com/invalid'); } catch (ExceptionInterface $e) { echo $e->getMessage(); // Not Found echo $e->getCode(); // 404 print_r($e->format()); }
๐ Response Interface
Each request returns a structured object implementing ResponseInterface
.
Method | Description |
---|---|
getStatusCode() |
Returns the HTTP status code |
getHeaders() |
Returns an array of headers |
getContent() |
Returns raw response body (string) |
toArray() |
Returns JSON-decoded response |
cancel() |
Closes the response stream and all related buffers. |
getInfo($key) |
Returns meta information (e.g. url) |
๐งช Run Tests
A full suite of unit tests is included and runs against a public API (jsonplaceholder.typicode.com
).
vendor/bin/phpunit tests
๐งฐ Developer Tools
โ Code style
composer run phpcs-fix
๐ง Static analysis
composer run phpstan
Or run both checks at once:
make check-code-quality
๐ License
This package is licensed under the MIT License.
๐ค Author
Ulrich Geraud AHOGLA Software Engineer โ Osirisgate
If you have any questions or suggestions, please contact me via developer@osirisgate.com