Cette bibliothèque fournit des classes implémentant des clients REST de base basés sur l'extension cURL de PHP. Deux classes de clients sont mises à disposition :
RestClient - une classe pour exécuter des appels de service RESTful.
RestMultiClient - une classe qui étend RestClient pour fournir des fonctionnalités curl_multi permettant d'effectuer plusieurs appels RESTful en parallèle.
De plus, cette bibliothèque fournit des classes qui encapsulent les réponses curl dans une interface orientée objet :
CurlHttpResponse - une classe qui encapsule une réponse HTTP reçue via cURL dans un wrapper de classe.
CurlMultiHttpResponse - une classe qui représente une collection d'objets CurlHttpRepsonse renvoyés par plusieurs appels cURL parallèles.
Ces classes prennent en charge :
Actions HTTP : GET, POST, PUT, DELETE et HEAD
Authentification de base
SSL, avec la possibilité d'activer/désactiver la validation du certificat SSL pour faciliter les environnements de développement/test
Nécessite :
PHP5.6+
Extension PHP cURL
PHPUnit 5.7+ (pour les tests unitaires uniquement)
Cette bibliothèque est développée contre PHP 7.1 et testée via Travis CI contre :
PHP5.6.*
PHP7.0.*
PHP7.1.*
PHP Construction nocturne
Documentation complète de la bibliothèque
Statut de construction de Travis CI
Code Couverture du code climatique et informations sanitaires
Page du packagiste
Exemple d'utilisation :
<?php use MikeBrantRestClientLib; /** * Single request using RestClient */ $restClient = new RestClient(); $restClient->setRemoteHost('foo.bar.com') ->setUriBase('/some_service/') ->setUseSsl(true) ->setUseSslTestMode(false) ->setBasicAuthCredentials('username', 'password') ->setHeaders(array('Accept' => 'application/json')); // make requests against service $response = $restClient->get('resource'); $response = $restClient->post('resource', $data); $response = $restClient->put('resource', $data); $response = $restClient->delete('resource'); $response = $restClient->head('resource'); /** * Multiple parallel requests using RestMultiClient */ $restMultiClient = new RestMultiClient(); $restMultiClient->setRemoteHost('foo.bar.com') ->setUriBase('/some_service/') ->setUseSsl(true) ->setUseSslTestMode(false) ->setBasicAuthCredentials('username', 'password') ->setHeaders(array('Accept' => 'application/json')); // make requests against service $responses = $restMultiClient->get(['resource1', 'resource2', ...]); $responses = $restMultiClient->post(['resource1', 'resource2', ...], [$data1, $data2, ...]); $responses = $restMultiClient->put(['resource1', 'resource2', ...], [$data1, $data2, ...]); $responses = $restMultiClient->delete(['resource1', 'resource2', ...]); $responses = $restMultiClient->head(['resource1', 'resource2', ...]);