Update README.md
This commit is contained in:
213
README.md
213
README.md
@@ -1,2 +1,211 @@
|
|||||||
# Restclient
|
# RestClient
|
||||||
Client for interacting with REST apis
|
|
||||||
|
The `RestClient` is a versatile PHP class for making HTTP requests using cURL, with support for handling JSON responses, custom headers, file downloads, and cookies.
|
||||||
|
|
||||||
|
## Features
|
||||||
|
|
||||||
|
- Supports `GET`, `POST`, `PUT`, `DELETE` HTTP methods
|
||||||
|
- Handles JSON requests and responses
|
||||||
|
- Supports custom headers and user-agent strings
|
||||||
|
- Maintains session using cookies (optional)
|
||||||
|
- Can download files
|
||||||
|
- Throws exceptions for HTTP errors (configurable)
|
||||||
|
- Retrieves HTTP response codes
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
To use the `RestClient` class in your PHP project:
|
||||||
|
|
||||||
|
Setup this registry in your ~/.composer/config.json file:
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"repositories": [{
|
||||||
|
"type": "composer",
|
||||||
|
"url": "https://git.hpz.pw/api/packages/hpz937/composer"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
To install the package using Composer, run the following command:
|
||||||
|
```
|
||||||
|
composer require hpz937/restclient
|
||||||
|
```
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
### Basic Usage
|
||||||
|
|
||||||
|
You can start by creating an instance of `RestClient` and configuring options such as base URL, headers, or whether to use cookies.
|
||||||
|
|
||||||
|
```php
|
||||||
|
use Hpz937\Restclient\RestClient;
|
||||||
|
|
||||||
|
$client = new RestClient();
|
||||||
|
$client->setBaseUrl('https://api.example.com');
|
||||||
|
```
|
||||||
|
|
||||||
|
### HTTP GET Request
|
||||||
|
|
||||||
|
Perform a simple GET request to an API endpoint.
|
||||||
|
|
||||||
|
```php
|
||||||
|
$response = $client->get('/endpoint')
|
||||||
|
->getResponse();
|
||||||
|
|
||||||
|
echo $response;
|
||||||
|
```
|
||||||
|
|
||||||
|
### HTTP POST Request
|
||||||
|
|
||||||
|
Send data to the API using a POST request.
|
||||||
|
|
||||||
|
```php
|
||||||
|
$data = [
|
||||||
|
'name' => 'John Doe',
|
||||||
|
'email' => 'john@example.com',
|
||||||
|
];
|
||||||
|
|
||||||
|
$response = $client->post('/endpoint', $data)
|
||||||
|
->getResponse();
|
||||||
|
|
||||||
|
echo $response;
|
||||||
|
```
|
||||||
|
|
||||||
|
### HTTP PUT Request
|
||||||
|
|
||||||
|
Update resources using a PUT request.
|
||||||
|
|
||||||
|
```php
|
||||||
|
$data = [
|
||||||
|
'name' => 'Jane Doe',
|
||||||
|
];
|
||||||
|
|
||||||
|
$response = $client->put('/endpoint/123', $data)
|
||||||
|
->getResponse();
|
||||||
|
|
||||||
|
echo $response;
|
||||||
|
```
|
||||||
|
|
||||||
|
### HTTP DELETE Request
|
||||||
|
|
||||||
|
Delete a resource using a DELETE request.
|
||||||
|
|
||||||
|
```php
|
||||||
|
$response = $client->delete('/endpoint/123')
|
||||||
|
->getResponse();
|
||||||
|
|
||||||
|
echo $response;
|
||||||
|
```
|
||||||
|
|
||||||
|
### Handling JSON Responses
|
||||||
|
|
||||||
|
To handle JSON responses, you can use the `decodeJson` method to convert the response into an associative array.
|
||||||
|
|
||||||
|
```php
|
||||||
|
$response = $client->get('/endpoint')
|
||||||
|
->decodeJson();
|
||||||
|
|
||||||
|
print_r($response);
|
||||||
|
```
|
||||||
|
|
||||||
|
### Custom Headers
|
||||||
|
|
||||||
|
You can set custom headers for your requests.
|
||||||
|
|
||||||
|
```php
|
||||||
|
$headers = [
|
||||||
|
'Authorization: Bearer YOUR_TOKEN',
|
||||||
|
'Accept: application/json',
|
||||||
|
];
|
||||||
|
|
||||||
|
$client->setHeaders($headers);
|
||||||
|
```
|
||||||
|
|
||||||
|
### Setting User-Agent
|
||||||
|
|
||||||
|
Set a custom `User-Agent` string for the requests.
|
||||||
|
|
||||||
|
```php
|
||||||
|
$client->setUserAgent('MyCustomUserAgent/1.0');
|
||||||
|
```
|
||||||
|
|
||||||
|
### File Downloads
|
||||||
|
|
||||||
|
You can download files using the `download` method. Make sure to specify the filename where the file will be saved.
|
||||||
|
|
||||||
|
```php
|
||||||
|
$client->download('/path/to/file.jpg', '/local/path/to/save/file.jpg')
|
||||||
|
->get('/endpoint/download-file');
|
||||||
|
|
||||||
|
echo "File downloaded successfully!";
|
||||||
|
```
|
||||||
|
|
||||||
|
### Using Cookies
|
||||||
|
|
||||||
|
Enable cookies to maintain session data between requests.
|
||||||
|
|
||||||
|
```php
|
||||||
|
$client->setUseCookies(true);
|
||||||
|
```
|
||||||
|
|
||||||
|
### Exception Handling for HTTP Errors
|
||||||
|
|
||||||
|
By default, the `RestClient` throws exceptions when HTTP errors (4xx, 5xx) occur. You can handle these exceptions as follows:
|
||||||
|
|
||||||
|
```php
|
||||||
|
try {
|
||||||
|
$client->get('/invalid-endpoint')
|
||||||
|
->getResponse();
|
||||||
|
} catch (Exception $e) {
|
||||||
|
echo 'Error: ' . $e->getMessage();
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Getting the HTTP Response Code
|
||||||
|
|
||||||
|
Retrieve the HTTP response code from the most recent request.
|
||||||
|
|
||||||
|
```php
|
||||||
|
$responseCode = $client->getResponseCode();
|
||||||
|
|
||||||
|
echo "HTTP Response Code: $responseCode";
|
||||||
|
```
|
||||||
|
|
||||||
|
## Example Workflow
|
||||||
|
|
||||||
|
```php
|
||||||
|
use Hpz937\Restclient\RestClient;
|
||||||
|
|
||||||
|
$client = new RestClient();
|
||||||
|
$client->setBaseUrl('https://api.example.com')
|
||||||
|
->setUserAgent('MyApp/1.0')
|
||||||
|
->setHeaders([
|
||||||
|
'Authorization: Bearer YOUR_API_KEY',
|
||||||
|
'Content-Type: application/json',
|
||||||
|
])
|
||||||
|
->setUseCookies(true);
|
||||||
|
|
||||||
|
try {
|
||||||
|
// GET request example
|
||||||
|
$response = $client->get('/users')
|
||||||
|
->decodeJson();
|
||||||
|
print_r($response);
|
||||||
|
|
||||||
|
// POST request example
|
||||||
|
$data = ['name' => 'New User'];
|
||||||
|
$response = $client->post('/users', $data)
|
||||||
|
->getResponse();
|
||||||
|
echo $response;
|
||||||
|
|
||||||
|
} catch (Exception $e) {
|
||||||
|
echo 'Request failed: ' . $e->getMessage();
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
This project is licensed under the MIT License. See the LICENSE file for details.
|
||||||
|
```
|
||||||
|
|
||||||
|
This `README.md` provides an overview of the class, installation instructions, and usage examples for each of the key methods in your `RestClient` class.
|
||||||
Reference in New Issue
Block a user