Aller au contenu principal
Version: 5.x

🚀 Http Client

Le client HTTP de BowPHP est un composant puissant et flexible permettant de rĂ©aliser des requĂȘtes HTTP vers des API ou des services distants. Il utilise la bibliothĂšque cURL pour offrir des fonctionnalitĂ©s avancĂ©es tout en simplifiant leur utilisation.

FonctionnalitĂ©s principales​

  1. Méthodes HTTP supportées : GET, POST, PUT, DELETE.
  2. Gestion des en-tĂȘtes personnalisĂ©s.
  3. Support des fichiers attachĂ©s pour les requĂȘtes multipart/form-data.
  4. Encodage JSON natif des données.
  5. DĂ©finition d'une URL de base (base_url) pour simplifier la gestion des endpoints API.
  6. Gestion des erreurs avec des exceptions spécifiques.

Utilisation​

Pour utilisater le client http rien de plus simple que de faire une nouvelle instance ou une injection dans un service ou un controller:

$client = new HttpClient();
info

Le contructeur prends un paramĂštres $base_url qui est optionnel. Si le base url est define l'appel des endpoints devient plus simple

$client = new HttpClient('https://api.example.com');

Dans le cas ou nous n'avez pas définit la base url à la création de l'instance, setBaseUrl nous permet de le faire.

get​

Effectue une requĂȘte GET.

  • ParamĂštres :
    • $url : Le chemin relatif ou l'URL complĂšte.
    • $data : Les paramĂštres de la requĂȘte (ajoutĂ©s Ă  l'URL sous forme de chaĂźne de requĂȘte).
  • Retourne :
    • Une instance de Response contenant les donnĂ©es de la rĂ©ponse.
$client = new HttpClient('https://api.example.com');
$response = $client->get('/users', ['page' => 2]);

echo $response->getContent();

post​

Effectue une requĂȘte POST.

  • ParamĂštres :
    • $url : Le chemin relatif ou l'URL complĂšte.
    • $data : Les donnĂ©es Ă  envoyer (JSON ou application/x-www-form-urlencoded).
  • Retourne :
    • Une instance de Response contenant les donnĂ©es de la rĂ©ponse.
$client = new HttpClient('https://api.example.com');
$response = $client->acceptJson()->post('/users', [
'name' => 'John Doe',
'email' => 'john.doe@example.com'
]);

echo $response->getContent();

put​

Effectue une requĂȘte PUT.

  • ParamĂštres :
    • $url : Le chemin relatif ou l'URL complĂšte.
    • $data : Les donnĂ©es Ă  envoyer.
  • Retourne :
    • Une instance de Response contenant les donnĂ©es de la rĂ©ponse.
$client = new HttpClient('https://api.example.com');
$response = $client->acceptJson()->put('/users', [
'name' => 'John Doe',
'email' => 'john.doe@example.com'
]);

echo $response->getContent();

delete​

Effectue une requĂȘte DELETE.

  • ParamĂštres :
    • $url : Le chemin relatif ou l'URL complĂšte.
    • $data : Les donnĂ©es Ă  envoyer (si applicables).
  • Retourne :
    • Une instance de Response contenant les donnĂ©es de la rĂ©ponse.
$client = new HttpClient('https://api.example.com');
$response = $client->delete('/users/2');

echo $response->getContent();

addAttach​

Attache un ou plusieurs fichiers Ă  la requĂȘte.

  • ParamĂštres :
    • $attach : Chemin(s) du ou des fichiers Ă  envoyer.
  • Retourne :
    • L'instance du client pour un chaĂźnage fluide.
$client = new HttpClient('https://api.example.com');
$response = $client->addAttach('/path/to/file.txt')->post('/upload');

echo $response->getContent();

addHeaders​

Ajoute des en-tĂȘtes personnalisĂ©s Ă  la requĂȘte.

  • ParamĂštres :
    • $headers : Tableau associatif des en-tĂȘtes (ex. : ['Authorization' => 'Bearer token']).
  • Retourne :
    • L'instance du client pour un chaĂźnage fluide.
$client = new HttpClient('https://api.example.com');
$response = $client->get('/users', ['page' => 2]);

echo $response->getContent();

setUserAgent​

DĂ©finit l'agent utilisateur pour la requĂȘte.

  • ParamĂštres :
    • $user_agent : ChaĂźne reprĂ©sentant l'agent utilisateur.
  • Retourne :
    • L'instance du client pour un chaĂźnage fluide.
$client = new HttpClient('https://api.example.com');
$response = $client->get('/users', ['page' => 2]);

echo $response->getContent();

acceptJson​

Configure le client pour envoyer et accepter des données au format JSON.

  • Retourne :
    • L'instance du client pour un chaĂźnage fluide.
$client = new HttpClient('https://api.example.com');
$response = $client->get('/users', ['page' => 2]);

echo $response->getContent();

La classe Response​

La classe Response est utilisĂ©e pour manipuler la rĂ©ponse. Elle encapsule les informations retournĂ©es par la requĂȘte, telles que le contenu de la rĂ©ponse, les en-tĂȘtes HTTP, le code de statut, ainsi que des informations de performance. Voici une vue d'ensemble des fonctionnalitĂ©s de cette classe.

MĂ©thodes​

getContent​

public function getContent(): ?string

Cette méthode retourne le contenu de la réponse HTTP sous forme de chaßne de caractÚres. Si aucun contenu n'est disponible, elle retourne null.

toJson​

public function toJson(?bool $associative = null): object|array

Cette mĂ©thode permet de dĂ©coder le contenu de la rĂ©ponse (en supposant qu'il soit au format JSON) en un objet ou un tableau PHP. Le paramĂštre optionnel $associative permet de choisir si le rĂ©sultat doit ĂȘtre un tableau associatif (true) ou un objet (false).

toArray​

public function toArray(): array

C'est une méthode alias de toJson(true), qui retourne le contenu JSON de la réponse sous forme de tableau associatif.

getHeaders​

public function getHeaders(): array

Retourne les en-tĂȘtes HTTP de la rĂ©ponse sous forme de tableau. Ce tableau contient des informations telles que le code de statut HTTP, le type de contenu, le temps d'exĂ©cution, etc.

getCode / statusCode​

public function getCode(): ?int
public function statusCode(): ?int

Ces mĂ©thodes retournent le code de statut HTTP de la rĂ©ponse (par exemple, 200 pour une requĂȘte rĂ©ussie, 404 pour une ressource introuvable). Si le code de statut n'est pas disponible, elles retournent null.

isSuccessful​

public function isSuccessful(): bool

Cette méthode retourne true si le code de statut HTTP indique une réponse réussie (200 ou 201), sinon elle retourne false.

isFailed​

public function isFailed(): bool

Cette méthode retourne true si le code de statut HTTP indique une erreur (tout code autre que 200 ou 201), sinon elle retourne false.

Informations de performance​

Le client HTTP de Bow fournit Ă©galement des mĂ©thodes pour obtenir des informations sur la performance de la requĂȘte HTTP.

  • getExecutionTime : Retourne le temps total d'exĂ©cution de la requĂȘte en secondes.
  • getConnexionTime : Retourne le temps nĂ©cessaire pour Ă©tablir une connexion avec le serveur.
  • getUploadSize : Retourne la taille des donnĂ©es envoyĂ©es lors de la requĂȘte en octets.
  • getUploadSpeed : Retourne la vitesse de tĂ©lĂ©chargement des donnĂ©es envoyĂ©es.
  • getDownloadSize : Retourne la taille des donnĂ©es reçues lors de la requĂȘte en octets.
  • getDownloadSpeed : Retourne la vitesse de tĂ©lĂ©chargement des donnĂ©es reçues.

Ces informations sont utiles pour analyser les performances des requĂȘtes HTTP, en particulier dans des scĂ©narios oĂč la rapiditĂ© et l'efficacitĂ© sont essentielles.

Gestion des erreurs​

  • getErrorMessage : Retourne le message d'erreur, s'il y en a un. Si aucune erreur n'est prĂ©sente, cette mĂ©thode retourne une chaĂźne vide.
  • getErrorNumber : Retourne le code d'erreur cURL, s'il y en a un.

getContentType​

public function getContentType(): ?string

Cette méthode retourne le type de contenu retourné par la réponse (par exemple, application/json), ou null si ce type n'est pas disponible.

Il manque quelque chose ?

Si vous rencontrez des problÚmes avec la documentation ou si vous avez des suggestions pour améliorer la documentation ou le projet en général, veuillez déposer une issue pour nous, ou envoyer un tweet mentionnant le compte Twitter @bowframework ou sur directement sur le github.