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