simple-api-client
![Travis][ico-testing]
[![Quality Score][ico-code-quality]][link-code-quality]
![Total Downloads][ico-downloads], (*1)
The simple-api-client library provides an easy way to build wrappers for public REST APIs., (*2)
Install
Via Composer, (*3)
``` bash
$ composer require atog/simple-api-client, (*4)
## Usage
### Classes
#### Client
The `Client` Class contains the basic Informations about the API liek the `$domain`. It has to extend the abstract class `Atog\Api\Client`
```php
class Client extends \Atog\Api\Client
{
protected $domain = 'http://example.com/api/v1';
}
Endpoints
Endpoints provide the functions to query the resources of the API., (*5)
class TestEndpoint extends \Atog\Api\Endpoint
{
protected $endpoint = 'foo';
public function find($slug)
{
// https://example.com/api/v1/foo/$slug gets called
$this->respond(
$this->client->get($this->getEndpointUrl($slug, true))
);
}
}
Models
The Models are the datastructures of the resources. Attributes can easly be changed with get and set mutators (much like the Eloquent Mutators from Laravel: https://laravel.com/docs/5.2/eloquent-mutators), (*6)
class TestModel extends Model
{
public function getNameAttribute($value)
{
return strtoupper($value);
}
public function setFirstNameAttribute($value)
{
$this->attributes['first_name'] = strtolower($value);
}
public function setContactsAttribute($value)
{
$this->attributes['contacts'] = $this->makeCollection($value, Contacts::class);
}
}
Initialization
The first parameter defines all endpoints you are using. The second provides some options about the models or cUrl. In the models config we can bind a model to an endpoint, (*7)
// new Client(array $endpoints, array $config = [])
$client = new Client(
[
TestEndpoint::class
],
[
'models' => [
'TestEndpoint' => TestModel::class
],
'curl' => [
CURLOPT_TIMEOUT => 60
]
]
);
$foo = $client->testEndpoint->find(1); // GET http://example.com/api/v1/foo/1
Change log
1.1.0
- added support for query params
- added helper method to return api reponse
1.0.0
Testing
bash
$ composer test
, (*8)
License
The MIT License (MIT). Please see License File for more information., (*9)