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: 6 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)