https://github.com/ericsizemore/api
A simple wrapper/builder using Guzzle for base API clients.
https://github.com/ericsizemore/api
api api-client api-wrapper guzzle guzzlehttp hacktoberfest
Last synced: 11 months ago
JSON representation
A simple wrapper/builder using Guzzle for base API clients.
- Host: GitHub
- URL: https://github.com/ericsizemore/api
- Owner: ericsizemore
- License: mit
- Created: 2024-02-06T06:25:42.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2025-04-14T16:40:18.000Z (11 months ago)
- Last Synced: 2025-04-14T17:43:34.797Z (11 months ago)
- Topics: api, api-client, api-wrapper, guzzle, guzzlehttp, hacktoberfest
- Language: PHP
- Homepage:
- Size: 541 KB
- Stars: 6
- Watchers: 2
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE.md
- Code of conduct: CODE_OF_CONDUCT.md
- Security: SECURITY.md
Awesome Lists containing this project
README
Esi\Api - A simple wrapper/builder using Guzzle for base API clients.
=====================================================================
[](https://scrutinizer-ci.com/g/ericsizemore/api/build-status/main)
[](https://scrutinizer-ci.com/g/ericsizemore/api/?branch=main)
[](https://scrutinizer-ci.com/g/ericsizemore/api/?branch=main)
[](https://github.com/ericsizemore/api/actions/workflows/continuous-integration.yml)
[](https://packagist.org/packages/esi/api)
[](https://packagist.org/packages/esi/api)
[](https://packagist.org/packages/esi/api)
## About
Documentation will be a bit lackluster, and the unit tests need a lot of work. With that being said, I created this library more for use in my own projects that center around an API service; to decouple a lot of the logic that would be repeated in each API service library, to its own library.
It has a long way to go, but it should be relatively stable.
## Features
* Builds around [`guzzle/guzzle`](https://github.com/guzzle/guzzle) as the HTTP Client.
* Cache's requests via [`Kevinrob/guzzle-cache-middleware`](https://github.com/Kevinrob/guzzle-cache-middleware).
* Can retry requets on a connection or server error via the Guzzle Retry Middleware.
* `Client::enableRetryAttempts()` to instruct the client to attempt retries.
* `Client::disableRetryAttempts()` to disable attempt retries.
* `Client::setMaxRetryAttempts()` to set the maximum number of retries.
* Can pass along headers in `Client::build()` to be 'persistent' headers, i.e. headers sent with every request.
* One function that handles sending a request: `Client::send()`
It currently does not support async requests and pooling. Just your regular, good 'ol, standard requests.
## Example
```php
use Esi\Api\Client;
// api url, api key, cache path, does the api require key sent as a query arg, the name of the query arg
$client = new Client('https://myapiurl.com/api', 'myApiKey', '/var/tmp', true, 'api_key');
// Must first 'build' the client with (optional) $options array which can include any valid Guzzle option.
$client->build([
'persistentHeaders' => [
'Accept' => 'application/json',
],
'allow_redirects' => true,
// ... etc.
]);
$client->enableRetryAttempts();
$client->setMaxRetryAttempts(5);
$response = $client->send('GET', '/', ['query' => ['foo' => 'bar']]);
// Decode the json and return as array
$data = $client->toArray($response);
// or... as an object
$data = $client->toObject($response);
// or... for the raw json response, to do with as you will
$data = $client->raw(); // or $response->getBody()->getContents()
```
### Requirements
- PHP 8.2.0 or above.
### Submitting bugs and feature requests
Bugs and feature requests are tracked on [GitHub](https://github.com/ericsizemore/api/issues)
Issues are the quickest way to report a bug. If you find a bug or documentation error, please check the following first:
* That there is not an Issue already open concerning the bug
* That the issue has not already been addressed (within closed Issues, for example)
### Contributing
See [CONTRIBUTING](CONTRIBUTING.md).
### Author
Eric Sizemore - -
### License
Esi\Api is licensed under the MIT License - see the `LICENSE.md` file for details