Symfony HTTP Client Exemple de base
Nous allons parler aujourd’hui du composant HTTP Client. Il s’agit d’un client HTTP de base niveau prenant en charge les wrappers de flux PHP et cURL.
Le composant HTTP Client fournit des utilitaires pour consommer des API et prend en charge des opérations synchrones et asynchrones
Pour l’installer : composer require symfony/http-client
Vous pouvez bien sûr creér votre bundle avec la commande
=> php bin/console make:controller
avec quelques actions dans notre Controller
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Messenger\MessageBusInterface;
use Symfony\Contracts\HttpClient\HttpClientInterface;
use App\Message\SmsNotification;
class ApiController extends AbstractController
{
/**
* @Route("/api", name="api")
*/
public function index(HttpClientInterface $httpClient)
{
$response = $httpClient->request('GET', 'https://api.github.com/users/amine-betari/repos', [
'query' => [
'sort' => 'created'
]
]);
return $this->render('app/index.html.twig', [
'repos' => $response->toArray(),
]);
}
/**
* @Route("/show/{id}", name="show")
*/
public function show(HttpClientInterface $httpClient, $id)
{
$response = $httpClient->request('GET', 'https://api.github.com/repositories/'. $id, [
'query' => [
'sort' => 'created'
]
]);
return $this->render('app/show.html.twig', [
'repo' => $response->toArray(),
]);
}
}
La première action permet de récupérer les repositories d’un utilisateur donné. j’utilise le mien dans cet exemple.
Si vous avez remarqué, on injecte le service HTTPClientInterface qui va nous permettre de faire des requêtes GET pour consommer l’API Github la nouveauté avec la méthode toArray() => permet d’avoir le body de la réponse encodé dans un tableau chose qui facilite la tâche.
Dans la 2eme action vous allez trouvé un autre exemple
Pour aller plus loin => https://symfony.com/doc/4.4/http_client.html
Voici une vidéo complète avec plus d’explications
https://www.youtube.com/watch?v=CYapIiL7Vqg&t=982s
Nous allons voir d’autres exemples plus complet dans le future
Merci