PHP Classes

File: README.md

Recommend this page to a friend!
  Classes of Andre Roque Filipe  >  PHP API Caller  >  README.md  >  Download  
File: README.md
Role: Documentation
Content type: text/plain
Description: New version - 0.2.0
Class: PHP API Caller
Send requests to different Web services APIs
Author: By
Last change: Update of README.md
Date: 10 months ago
Size: 3,816 bytes
 

Contents

Class file image Download
# APIcaller 

[![Downloads with Composer](https://poser.pugx.org/masnathan/api-caller/downloads.png)](https://packagist.org/packages/masnathan/api-caller)
[![SensioLabs Insight](https://insight.sensiolabs.com/projects/a1bfb7a8-0b34-4118-a451-fc8f158ef9c7/mini.png)](https://insight.sensiolabs.com/projects/6d9231d8-9140-4b02-9522-5d3c3aa3d6f2)
[![ReiDuKuduro @gittip](http://bottlepy.org/docs/dev/_static/Gittip.png)](https://www.gittip.com/ReiDuKuduro/)

APIcaller is a class that helps you build API wrappers.  
You don't have to worry about building URLs, or even about parsing the requested data.

## How to use

You will have to extend the ```Client``` class and the ```Caller``` class, the ```Client``` will handle all the 
configuration to use on the requests and the ```Caller``` will be used as the interface to interact with the API.

```php
use MASNathan\APICaller\Client;
use MASNathan\APICaller\Caller;

class MyPackageClient extends Client
{
    /**
     * Here you can set the default headers and parameters on a global scope
     */
    public function __construct($ip = null)
    {
        $this->setDefaultHeaders([
            'User-Agent' => 'PHP APICaller SDK',
            'Accept'     => 'application/json',
            'Token'      => '123456',
        ]);
        $this->setDefaultParameters([
            'ip' => $ip ?: '127.0.0.1',
        ]);
    }

    /**
     * Returns the API Endpoint
     *
     * @return string
     */
    public function getEndpoint()
    {
        return 'http://api.domain.com/v1/';
    }
}

class MyPackageCaller extends Caller
{
    public function requestSomething($foo, $bar)
    {
        $params = [
            'foo' => $foo,
            'bar' => $bar,
        ];

        // this will result in this url http://api.domain.com/v1/some-method.json?ip={$ip}&foo={$foo}&bar={$bar}
        $response = $this->client->get('some-method.json', $params);

        $data = $this->handleResponseContent($response, 'json');

        // Do something with your data

        return $data;
    }
}
```

Well, this is how you can start creating your class, now, lets make some calls!

```php
$client = new MyPackageClient('8.8.8.8');
$caller = new MyPackageCaller($client);

$result = $caller->requestSomething(13, 37);

var_dump($result);
```

This will call the following url:```http://api.domain.com/v1/some-method.json?ip=8.8.8.8&foo=13&bar=37```.

## Installation

To install the SDK, you will need to be using [Composer](http://composer.org) in your project. If you don't have composer 
installed check this page and follow the [installation steps](https://getcomposer.org/download/)

This library is not hard coupled to Guzzle or any other library that sends HTTP messages. 
It uses an abstraction called [HTTPlug](http://httplug.io/). 
This will give you the flexibility to choose what PSR-7 implementation and HTTP client to use.

To get started ASAP you should run the following command:

```sh
# Add APIcaller as a dependency
$ composer require masnathan/api-caller php-http/curl-client guzzlehttp/psr7
```

## Why do I need to require all those packages?

APICaller depends on the virtual package [php-http/client-implementation](https://packagist.org/providers/php-http/client-implementation) 
which requires to you install an adapter, but we do not care which one. 
That is an implementation detail in your application. 
We also need a PSR-7 implementation and a message factory.

You don't have to use the [php-http/curl-client](https://github.com/php-http/curl-client) if you don't want to. 
Read more about the virtual packages, why this is a good idea and about the flexibility it brings at the [HTTPlug docs](http://docs.php-http.org/en/latest/index.html).

# License

This library is under the MIT License, see the complete license [here](LICENSE)
For more information send a message to info at phpclasses dot org.