Build REST API consumer (client) easier than ever
Easily install it through Composer:
composer require lessmore92/api-consumer PHP >=5.5 Easily extends your class from ApiConsumer and impalements ConfigApi method, and builds your awesome API Client.
use Lessmore92\ApiConsumer\ApiConsumer; use Lessmore92\ApiConsumer\Builders\ApiBuilder; class MyApi extends ApiConsumer { /** * @return ApiBuilder */ protected function ConfigApi() { $api = new ApiBuilder(); $api->setHeaderApiKey('API-TOKEN','X-API-Key'); $api->setBaseUrl('https://MY-API-BASE-URL.COM/'); return $api; } } If the api key needs to be placed in the query string use setQueryApiKey instead of setHeaderApiKey for example $api->setQueryApiKey('API-TOKEN','TOKEN');
By inheriting ApiConsumer your class will be able to utilize $this->Request() method, which supports chaining. With $this->Request() you will be able to access all the features and functionalities to make your request.
To specify an endpoint to be called, you must use ->Endpoint() method. After that by chaining ->Get() method at the end, REQUEST METHOD is specified as GET.
use Lessmore92\ApiConsumer\ApiConsumer; use Lessmore92\ApiConsumer\Builders\ApiBuilder; class MyApi extends ApiConsumer { /** * @return ApiBuilder */ protected function ConfigApi() { $api = new ApiBuilder(); $api->setHeaderApiKey('API-TOKEN','X-API-Key'); $api->setBaseUrl('https://MY-API-BASE-URL.COM/'); return $api; } public function Users() { $users = $this->Request() ->Endpoint('users') ->Get() ; return $users->body; } } In the above example we defined a method to GET Users list from server.
By calling Users() method, in fact we are getting https://MY-API-BASE-URL.COM/users
To pass data in query string (e.g to search, order or filter) you can use ->AddQueryString() method.
public function SearchUsers($search) { $users = $this->Request() ->Endpoint('users') ->AddQueryString('search', $search) ->Get() ; return $users->json_body; } In the above example we defined a method to search in users.
By calling SearchUsers('alex') method, in fact we are getting https://MY-API-BASE-URL.COM/users?search=alex
To receive data as json, you must use ->AcceptJson() method.
public function SearchUsers($search) { $users = $this->Request() ->Endpoint('users') ->AcceptJson() ->Get() ; return $users->json_body; } As you can see in the code above, by chaining ->AcceptJson() in request we are telling to api server that we accept json, then in the return line we are returning a json formatted search result.
For json data format, your api server must be able to provide json formatted response and support HEADER 'accept : application/json'