tal7aouy / yusr
A lightweight HTTP client library for PHP inspired by Guzzle.
1.0.4
2024-10-27 19:24 UTC
Requires
- php: >=7.4 || ^8.0
- ext-curl: *
- ext-json: *
- psr/http-client: ^1.0
- psr/http-message: ^2.0
Requires (Dev)
- laravel/pint: ^1.18
- mockery/mockery: ^1.6
- pestphp/pest: ^3.3
- rector/rector: ^1.2
This package is auto-updated.
Last update: 2024-11-21 18:01:16 UTC
README
YusrClient is a robust and easy-to-use PHP HTTP client that simplifies making HTTP requests in your PHP applications. Built with modern PHP practices, it implements the PSR-18 HTTP Client interface and provides a fluent API for sending HTTP requests.
✨ Key Features
- 🔒 PSR-18 HTTP Client compliant
- 🛠 Singleton pattern implementation
- 🚦 Full HTTP method support (GET, POST, PUT, DELETE, PATCH)
- 🔄 Automatic retry mechanism with exponential backoff
- 🔧 Highly customizable request options
- 🧩 Intuitive fluent interface
- ⏱ Configurable timeouts
- 🔐 SSL verification support
📦 Installation
composer require tal7aouy/yusr
🚀 Quick Start
use Yusr\Http\YusrClient; // Get client instance $client = YusrClient::getInstance(); // Make a GET request $response = $client->get('https://api.example.com/users'); // Work with response $statusCode = $response->getStatusCode(); $data = $response->getBody()->getContents(); $headers = $response->getHeaders();
⚙️ Configuration
$client = YusrClient::getInstance([ 'timeout' => 30, 'allow_redirects' => true, 'verify' => true, 'retry' => [ 'max_attempts' => 3, 'delay' => 1000 // milliseconds ] ]);
📘 Available Methods
HTTP Methods
$client->get(string $uri, array $options = []); $client->post(string $uri, array $options = []); $client->put(string $uri, array $options = []); $client->delete(string $uri, array $options = []); $client->patch(string $uri, array $options = []);
Request Options
query
- Array of URL query parametersheaders
- Custom request headersbody
- Request body (for POST, PUT, PATCH)timeout
- Request timeout in secondsallow_redirects
- Follow redirects (boolean)verify
- SSL certificate verificationretry
- Retry configuration for failed requests
🔄 Retry Mechanism
YusrClient includes a sophisticated retry mechanism with exponential backoff:
$client = YusrClient::getInstance([ 'retry' => [ 'max_attempts' => 3, 'delay' => 1000, 'multiplier' => 2 ] ]);
🤝 Contributing
Contributions are always welcome! Please read our Contributing Guide for details.
📝 License
This project is licensed under the MIT License.
🙏 Support
If you find this package helpful, please consider giving it a star ⭐️