{"id":68734,"date":"2023-04-28T16:47:47","date_gmt":"2023-04-28T15:47:47","guid":{"rendered":"https:\/\/kinsta.com\/fr\/?p=68734&#038;preview=true&#038;preview_id=68734"},"modified":"2023-11-03T03:59:03","modified_gmt":"2023-11-03T02:59:03","slug":"laravel-http","status":"publish","type":"post","link":"https:\/\/kinsta.com\/fr\/blog\/laravel-http\/","title":{"rendered":"Comment utiliser le client int\u00e9gr\u00e9 de Laravel pour interagir avec des API externes ?"},"content":{"rendered":"<p>Avec Laravel, les interactions avec les API sont un jeu d&rsquo;enfant pour les d\u00e9veloppeurs web, qu&rsquo;ils soient nouveaux ou exp\u00e9riment\u00e9s. Le client HTTP Larvel est construit au-dessus du client HTTP Guzzle de PHP pour offrir aux d\u00e9veloppeurs une exp\u00e9rience plus fluide lors des <a href=\"https:\/\/kinsta.com\/fr\/blog\/qu-est-une-requete-http\/\">requ\u00eates HTTP<\/a>. Ses principales fonctionnalit\u00e9s sont l&rsquo;authentification, le routage et le mappage objet-relationnel (ORM).<\/p>\n<p>Cet article explore l&rsquo;utilisation du client HTTP de Laravel pour effectuer des requ\u00eates, d\u00e9boguer les r\u00e9ponses, cr\u00e9er des middlewares et des macros, et plus encore.<\/p>\n<div><\/div><kinsta-auto-toc heading=\"Table of Contents\" exclude=\"last\" list-style=\"arrow\" selector=\"h2\" count-number=\"-1\"><\/kinsta-auto-toc>\n<h2>Le client HTTP de Laravel fait le travail difficile \u00e0 votre place pour les API<\/h2>\n<p><a href=\"https:\/\/docs.guzzlephp.org\/en\/stable\/\" target=\"_blank\" rel=\"noopener noreferrer\">Guzzle<\/a> est un client HTTP simple pour PHP. Il offre des fonctionnalit\u00e9s pour diff\u00e9rentes requ\u00eates de formulaire, y compris <code>GET<\/code>, <code>POST<\/code>, <code>PUT<\/code>, et <code>DELETE<\/code>, ainsi que des capacit\u00e9s de streaming et des requ\u00eates multipartites. Le client HTTP Guzzle permet d&rsquo;envoyer des requ\u00eates synchrones et asynchrones au serveur. En outre, il est accompagn\u00e9 d&rsquo;un middleware d\u00e9cent permettant de personnaliser le comportement du client.<\/p>\n<p>Le client HTTP de Laravel est un wrapper construit sur Guzzle mais avec des fonctionnalit\u00e9s suppl\u00e9mentaires. Il prend en charge la relance des requ\u00eates qui ont \u00e9chou\u00e9 et quelques fonctions d&rsquo;aide pour les donn\u00e9es JSON. La plupart des fonctionnalit\u00e9s des clients HTTP de Laravel sont similaires \u00e0 celles de Guzzle.<\/p>\n\n<h2>Pr\u00e9-requis<\/h2>\n<p>Dans les sections suivantes, vous en apprendrez plus sur le client HTTP de Laravel. Pour suivre, vous aurez besoin de :<\/p>\n<ul>\n<li>Connaissances de base sur <a href=\"https:\/\/kinsta.com\/fr\/blog\/laravel-10\/\">Laravel<\/a>, <a href=\"https:\/\/kinsta.com\/php\/\">PHP<\/a> et les <a href=\"https:\/\/kinsta.com\/fr\/blog\/api-performance\/\">API<\/a><\/li>\n<li>PHP et Composer install\u00e9s<\/li>\n<li>Postman<\/li>\n<\/ul>\n<h2>Comment faire des requ\u00eates<\/h2>\n<p>Pour comprendre comment utiliser un client HTTP pour effectuer une requ\u00eate, vous pouvez vous appuyer sur de nombreuses API h\u00e9berg\u00e9es, telles que <a href=\"https:\/\/reqres.in\/\" target=\"_blank\" rel=\"noopener noreferrer\">ReqRes<\/a>.<\/p>\n<p>Commencez par importer le package HTTP inclus lors de la cr\u00e9ation de l&rsquo;application. Dans le fichier <strong>App\/Http\/Controllers\/UserController.php<\/strong>, ajoutez le code suivant, en commen\u00e7ant par l&rsquo;instruction use au d\u00e9but du fichier et le reste du code dans la fonction index.<\/p>\n<pre><code class=\"language-php\">use Illuminate\\Support\\Facades\\Http;\nreturn Http::get(\"https:\/\/reqres.in\/api\/users?page=2\");<\/code><\/pre>\n<p><strong>Remarque :<\/strong> pour les cas d&rsquo;utilisation complexes, vous pouvez \u00e9galement envoyer la requ\u00eate avec des en-t\u00eates en utilisant la m\u00e9thode <code>withHeaders<\/code>.<\/p>\n<p>Dans le m\u00eame fichier, cr\u00e9ez une nouvelle m\u00e9thode post en utilisant le code ci-dessous :<\/p>\n<pre><code class=\"language-php\">function post()\n{\n    $response = Http::withHeaders([\n        'Content-Type' =&gt; 'application\/json',\n    ])-&gt;post('https:\/\/reqres.in\/api\/users', [\n        'name' =&gt; 'morpheus',\n        'job' =&gt; 'leader',\n    ]);\n    return $response;\n}<\/code><\/pre>\n<p>Ajoutez ensuite une route pour cette m\u00e9thode dans le fichier <strong>routes\/web.php <\/strong>:<\/p>\n<pre><code class=\"language-php\">Route::get('post',[UserController::class,'post']);<\/code><\/pre>\n<p>Maintenant, Postman peut \u00eatre utilis\u00e9 pour tester cette route. Ouvrez Postman et ajoutez <a href=\"http:\/\/127.0.0.1:8000\/post\">http:\/\/127.0.0.1:8000\/post<\/a> comme URL, avec le type de requ\u00eate <code>GET<\/code>. Une fois que vous aurez cliqu\u00e9 sur <strong>envoyer<\/strong>, vous verrez la r\u00e9ponse suivante :<\/p>\n<figure style=\"width: 703px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/03\/postman-requests.png\" alt=\"Effectuer des requ\u00eates \u00e0 l'aide de Postman\" width=\"703\" height=\"519\"><figcaption class=\"wp-caption-text\">Effectuer des requ\u00eates \u00e0 l&rsquo;aide de Postman<\/figcaption><\/figure>\n<h2>Requ\u00eates simultan\u00e9es<\/h2>\n<p>Les requ\u00eates parall\u00e8les am\u00e9liorent consid\u00e9rablement les performances car vous pouvez r\u00e9cup\u00e9rer plus de donn\u00e9es dans le m\u00eame laps de temps. Le client HTTP de Laravel permet d&rsquo;effectuer des requ\u00eates concurrentes en utilisant la m\u00e9thode pool.<\/p>\n<p>Dans <strong>App\/Http\/Controllers\/UserController.php<\/strong>, ajoutez le code suivant :<\/p>\n<pre><code class=\"language-php\">use Illuminate\\Http\\Client\\Pool;\nfunction concurrent()\n{\n    $responses = Http::pool(fn (Pool $pool) =&gt; [\n        $pool-&gt;get('https:\/\/reqres.in\/api\/users?page=2'),\n        $pool-&gt;get('https:\/\/reqres.in\/api\/users\/2'),\n        $pool-&gt;get('https:\/\/reqres.in\/api\/users?page=2'),\n    ]);\n\n    return $responses[0]-&gt;ok() &&\n        $responses[1]-&gt;ok() &&\n        $responses[2]-&gt;ok();\n}<\/code><\/pre>\n<p>Ensuite, ajoutez la route de support dans le fichier <strong>routes\/web.php<\/strong>.<\/p>\n<pre><code class=\"language-php\">Route::get('concurrent',[UserController::class,'concurrent']);<\/code><\/pre>\n<p>Le navigateur donne la r\u00e9ponse suivante lorsque la route est visit\u00e9e :<\/p>\n<figure style=\"width: 322px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/03\/concurrent-requests.png\" alt=\"Requ\u00eates simultan\u00e9es\" width=\"322\" height=\"109\"><figcaption class=\"wp-caption-text\">Requ\u00eates simultan\u00e9es<\/figcaption><\/figure>\n<h2>Macros de requ\u00eate<\/h2>\n<p>Les macros de requ\u00eate sont utiles pour interagir avec des chemins d&rsquo;acc\u00e8s communs \u00e0 l&rsquo;API.<\/p>\n<p>Pour cr\u00e9er la macro, vous devez la d\u00e9finir dans la m\u00e9thode boot du fichier <strong>app\/Http\/Providers\/AppServiceProvider.php<\/strong> en utilisant le code ci-dessous :<\/p>\n<pre><code class=\"language-php\">use Illuminate\\Support\\Facades\\Http;\nHttp::macro('reqres', function () {\n    return Http::baseUrl('https:\/\/reqres.in\/api');\n});<\/code><\/pre>\n<p><strong>Remarque :<\/strong> assurez-vous d&rsquo;ajouter l&rsquo;instruction use au d\u00e9but du fichier.<\/p>\n<p>Ensuite, utilisez la macro \u00e0 l&rsquo;int\u00e9rieur de <code>UserController<\/code> en ajoutant le code suivant :<\/p>\n<pre><code class=\"language-php\">function macro()\n{\n    $response = Http::reqres()-&gt;get('\/users?page=2');\n    return $response;\n}<\/code><\/pre>\n<p>Comme vous pouvez le constater, la macro \u00e9tant d\u00e9j\u00e0 cr\u00e9\u00e9e, il n&rsquo;est pas n\u00e9cessaire d&rsquo;ajouter \u00e0 nouveau l&rsquo;URL compl\u00e8te.<\/p>\n<p>Enfin, ajoutez une route dans le fichier<strong> routes\/web.php<\/strong> en utilisant le code ci-dessous :<\/p>\n<pre><code class=\"language-php\">Route::get('macro',[UserController::class,'macro']);<\/code><\/pre>\n<figure style=\"width: 442px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/03\/macro-requests.png\" alt=\"Requ\u00eate de macro\" width=\"442\" height=\"169\"><figcaption class=\"wp-caption-text\">Requ\u00eate de macro<\/figcaption><\/figure>\n<h2>Comment d\u00e9coder les r\u00e9ponses<\/h2>\n<p>Pour d\u00e9coder une r\u00e9ponse et vous assurer qu&rsquo;une requ\u00eate d&rsquo;API a abouti, vous utilisez la m\u00e9thode status incluse dans le client. Cette m\u00e9thode r\u00e9cup\u00e8re le code d&rsquo;\u00e9tat envoy\u00e9 par le serveur et l&rsquo;affiche.<\/p>\n<p>Pour tester cette m\u00e9thode, remplacez le code macro pr\u00e9c\u00e9dent par le code ci-dessous dans le fichier <strong>App\/Http\/Controllers\/UserController.php<\/strong>:<\/p>\n<pre><code class=\"language-php\">function macro()\n{\n    $response = Http::reqres()-&gt;get('\/users?page=2');\n    return $response-&gt;status();\n}<\/code><\/pre>\n<p>Ici, le code d&rsquo;\u00e9tat 200 signifie que la requ\u00eate a abouti.<\/p>\n<figure style=\"width: 296px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/03\/successful-decoding-response.png\" alt=\"R\u00e9ponse de d\u00e9codage r\u00e9ussie\" width=\"296\" height=\"105\"><figcaption class=\"wp-caption-text\">R\u00e9ponse de d\u00e9codage r\u00e9ussie<\/figcaption><\/figure>\n<h2>Comment tester les API JSON<\/h2>\n<p>Laravel dispose de plusieurs aides pour tester les API JSON et leurs r\u00e9ponses. Les <a href=\"https:\/\/laravel.com\/docs\/9.x\/http-tests\">fonctions d&rsquo;aide<\/a> comprennent <strong>json<\/strong>, <strong>getJson<\/strong>, <strong>postJson<\/strong>, <strong>putJson<\/strong>, <strong>patchJson<\/strong>, <strong>deleteJson<\/strong>, etc.<\/p>\n<p>Pour mieux comprendre le test, cr\u00e9ez un sc\u00e9nario de test pour la route de l&rsquo;utilisateur <code>GET<\/code>. Lorsque vous d\u00e9marrez l&rsquo;application Laravel, <em>l&rsquo;exemple de test<\/em> est d\u00e9j\u00e0 cr\u00e9\u00e9. Dans le fichier <strong>tests\/Feature\/ExampleTest.php<\/strong>, remplacez le code existant par ce qui suit :<\/p>\n<pre><code class=\"language-php\">&lt;?php\nnamespace Tests\\Feature;\nuse Illuminate\\Foundation\\Testing\\RefreshDatabase;\nuse Tests\\TestCase;\nclass ExampleTest extends TestCase\n{\n    \/**\n     * A basic test example.\n     *\n     * @return void\n     *\/\n    public function test_example()\n    {\n        $response = $this-&gt;getJson('\/users');\n\n        $response-&gt;assertStatus(200);\n    }\n}<\/code><\/pre>\n<p>Le code ajout\u00e9 r\u00e9cup\u00e8re les donn\u00e9es JSON sur la route de l&rsquo;utilisateur et v\u00e9rifie si le code d&rsquo;\u00e9tat est 200 ou non.<\/p>\n<p>Une fois le code de test ajout\u00e9, ex\u00e9cutez la commande suivante dans votre terminal pour lancer les tests :<\/p>\n<pre><code class=\"language-bash\">.\/vendor\/bin\/phpunit<\/code><\/pre>\n<p>Une fois les tests termin\u00e9s, vous verrez qu&rsquo;il a ex\u00e9cut\u00e9 deux tests, qui ont tous deux r\u00e9ussi.<\/p>\n<figure style=\"width: 784px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/03\/testing-json-api.png\" alt=\"Test des API JSON\" width=\"784\" height=\"172\"><figcaption class=\"wp-caption-text\">Test des API JSON<\/figcaption><\/figure>\n<p>De la m\u00eame mani\u00e8re, vous pouvez v\u00e9rifier diff\u00e9rents types de requ\u00eates et utiliser d&rsquo;autres m\u00e9thodes d&rsquo;aide pour des tests plus sophistiqu\u00e9s.<\/p>\n<h2>Comment g\u00e9rer les \u00e9v\u00e8nements<\/h2>\n<p>Laravel propose trois \u00e9v\u00e9nements \u00e0 d\u00e9clencher lorsque vous traitez des <a href=\"https:\/\/kinsta.com\/fr\/blog\/qu-est-une-requete-http\/\">requ\u00eates HTTP<\/a>.<\/p>\n<ul>\n<li><strong>RequestSending<\/strong>, qui pr\u00e9c\u00e8de l&rsquo;envoi de la requ\u00eate.<\/li>\n<li><strong>ResponseReceived<\/strong>, quand une r\u00e9ponse est re\u00e7ue.<\/li>\n<li><strong>ConnectionFailed<\/strong>, quand aucune r\u00e9ponse n&rsquo;est re\u00e7ue.<\/li>\n<\/ul>\n<p>Les trois \u00e9v\u00e9nements comprennent la propri\u00e9t\u00e9 <code>$request<\/code> qui permet d&rsquo;inspecter l&rsquo;instance <code>Illuminate\\Http\\Client\\Request<\/code>, et <code>ResponseReceived<\/code> dispose d&rsquo;une propri\u00e9t\u00e9 suppl\u00e9mentaire <code>$response property<\/code>. Ces propri\u00e9t\u00e9s sont particuli\u00e8rement utiles pour effectuer des actions apr\u00e8s un \u00e9v\u00e9nement. Par exemple, vous pouvez envoyer un e-mail apr\u00e8s avoir re\u00e7u une r\u00e9ponse positive.<\/p>\n<p>Pour cr\u00e9er un \u00e9v\u00e9nement et un \u00e9couteur, acc\u00e9dez au fichier <strong>app\/Providers\/EventServiceProvider.php<\/strong> et remplacez le tableau listen par le code suivant.<\/p>\n<pre><code class=\"language-php\">protected $listen = [\n    Registered::class =&gt; [\n        SendEmailVerificationNotification::class,\n    ],\n    'Illuminate\\Http\\Client\\Events\\ResponseReceived' =&gt; [\n        'App\\Listeners\\LogResponseReceived',\n    ],\n];<\/code><\/pre>\n<p>Ex\u00e9cutez ensuite la commande suivante dans votre terminal :<\/p>\n<pre><code class=\"language-bash\">php artisan event:generate<\/code><\/pre>\n<p>La commande ci-dessus cr\u00e9era le fichier <strong>app\/Listeners\/LogResponseReceived.php<\/strong>. Remplacez le code de ce fichier par le code ci-dessous :<\/p>\n<pre><code class=\"language-php\">&lt;?php\nnamespace App\\Listeners;\nuse Illuminate\\Http\\Client\\Events\\ResponseReceived;\nuse Illuminate\\Http\\Request;\nuse Illuminate\\Http\\Response;\nuse Illuminate\\Support\\Facades\\Log;\nclass LogResponseReceived\n{\n    \/**\n     * Create the event listener.\n     *\n     * @return void\n     *\/\n    public function __construct(Request $request, Response $response)\n    {\n        Log::channel('stderr')-&gt;info($response-&gt;status());\n    }\n\n    \/**\n     * Handle the event.\n     *\n     * @param  \\Illuminate\\Http\\Client\\Events\\ResponseReceived  $event\n     * @return void\n     *\/\n    public function handle(ResponseReceived $event)\n    {\n        \n    }\n}<\/code><\/pre>\n<p>Le journal d&rsquo;information du code d&rsquo;\u00e9tat est affich\u00e9 dans le terminal.<\/p>\n<figure style=\"width: 613px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/03\/terminal-codes.png\" alt=\"Journaux du terminal affichant le code d'\u00e9tat\" width=\"613\" height=\"111\"><figcaption class=\"wp-caption-text\">Journaux du terminal affichant le code d&rsquo;\u00e9tat<\/figcaption><\/figure>\n\n<h2>R\u00e9sum\u00e9<\/h2>\n<p>Qu&rsquo;un site ou une application web soit cr\u00e9\u00e9 par une organisation ou un d\u00e9veloppeur ind\u00e9pendant, les API sont la cl\u00e9 de leur succ\u00e8s. Cependant, leur utilisation peut s&rsquo;av\u00e9rer difficile.<\/p>\n<p>De nombreux <a href=\"https:\/\/kinsta.com\/fr\/blog\/frameworks-php\/\">frameworks<\/a> et <a href=\"https:\/\/kinsta.com\/fr\/blog\/bibliotheques-javascript\/\">biblioth\u00e8ques<\/a> promettent de simplifier ce processus, mais Laravel se distingue par l&rsquo;importance qu&rsquo;il accorde \u00e0 la simplicit\u00e9 et \u00e0 la facilit\u00e9 d&rsquo;utilisation. Son client int\u00e9gr\u00e9 prend en charge les appels d&rsquo;API faciles, les appels d&rsquo;API simultan\u00e9s, les macros d&rsquo;API, les m\u00e9thodes d&rsquo;aide pour les API bas\u00e9es sur JSON, et bien plus encore.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Avec Laravel, les interactions avec les API sont un jeu d&rsquo;enfant pour les d\u00e9veloppeurs web, qu&rsquo;ils soient nouveaux ou exp\u00e9riment\u00e9s. Le client HTTP Larvel est construit &#8230;<\/p>\n","protected":false},"author":259,"featured_media":68735,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[953,986],"class_list":["post-68734","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","topic-api","topic-laravel"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v24.6 (Yoast SEO v24.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Comment utiliser le client int\u00e9gr\u00e9 de Laravel pour interagir avec des API externes ? - Kinsta\u00ae<\/title>\n<meta name=\"description\" content=\"Plongez avec nous et explorez l&#039;utilisation du client HTTP de Laravel pour effectuer des requ\u00eates, d\u00e9boguer les r\u00e9ponses, cr\u00e9er des middlewares et des macros, et plus encore.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kinsta.com\/fr\/blog\/laravel-http\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Comment utiliser le client int\u00e9gr\u00e9 de Laravel pour interagir avec des API externes ?\" \/>\n<meta property=\"og:description\" content=\"Plongez avec nous et explorez l&#039;utilisation du client HTTP de Laravel pour effectuer des requ\u00eates, d\u00e9boguer les r\u00e9ponses, cr\u00e9er des middlewares et des macros, et plus encore.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/fr\/blog\/laravel-http\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kinstafrance\/\" \/>\n<meta property=\"article:published_time\" content=\"2023-04-28T15:47:47+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-11-03T02:59:03+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/04\/laravel-http.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"3042\" \/>\n\t<meta property=\"og:image:height\" content=\"1521\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Steve Bonisteel\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"Plongez avec nous et explorez l&#039;utilisation du client HTTP de Laravel pour effectuer des requ\u00eates, d\u00e9boguer les r\u00e9ponses, cr\u00e9er des middlewares et des macros, et plus encore.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/04\/laravel-http.jpg\" \/>\n<meta name=\"twitter:creator\" content=\"@kinsta_fr\" \/>\n<meta name=\"twitter:site\" content=\"@kinsta_fr\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"Steve Bonisteel\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/laravel-http\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/laravel-http\/\"},\"author\":{\"name\":\"Steve Bonisteel\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/person\/d84ceff87bd64a4368a581fc8aa8bd6f\"},\"headline\":\"Comment utiliser le client int\u00e9gr\u00e9 de Laravel pour interagir avec des API externes ?\",\"datePublished\":\"2023-04-28T15:47:47+00:00\",\"dateModified\":\"2023-11-03T02:59:03+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/laravel-http\/\"},\"wordCount\":1344,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/laravel-http\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/04\/laravel-http.jpg\",\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/fr\/blog\/laravel-http\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/laravel-http\/\",\"url\":\"https:\/\/kinsta.com\/fr\/blog\/laravel-http\/\",\"name\":\"Comment utiliser le client int\u00e9gr\u00e9 de Laravel pour interagir avec des API externes ? - Kinsta\u00ae\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/laravel-http\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/laravel-http\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/04\/laravel-http.jpg\",\"datePublished\":\"2023-04-28T15:47:47+00:00\",\"dateModified\":\"2023-11-03T02:59:03+00:00\",\"description\":\"Plongez avec nous et explorez l'utilisation du client HTTP de Laravel pour effectuer des requ\u00eates, d\u00e9boguer les r\u00e9ponses, cr\u00e9er des middlewares et des macros, et plus encore.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/laravel-http\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/fr\/blog\/laravel-http\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/laravel-http\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/04\/laravel-http.jpg\",\"contentUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/04\/laravel-http.jpg\",\"width\":3042,\"height\":1521,\"caption\":\"Comment utiliser le client int\u00e9gr\u00e9 de Laravel pour interagir avec des API externes ?\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/laravel-http\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/fr\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Laravel\",\"item\":\"https:\/\/kinsta.com\/fr\/sujets\/laravel\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Comment utiliser le client int\u00e9gr\u00e9 de Laravel pour interagir avec des API externes ?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/fr\/#website\",\"url\":\"https:\/\/kinsta.com\/fr\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Solutions d&#039;h\u00e9bergement premium, rapides et s\u00e9curis\u00e9es\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/fr\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/fr\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/fr\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kinstafrance\/\",\"https:\/\/x.com\/kinsta_fr\",\"https:\/\/www.instagram.com\/kinstahosting\/\",\"https:\/\/www.linkedin.com\/company\/kinsta\/\",\"https:\/\/www.pinterest.com\/kinstahosting\/\",\"https:\/\/www.youtube.com\/c\/Kinsta\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/person\/d84ceff87bd64a4368a581fc8aa8bd6f\",\"name\":\"Steve Bonisteel\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/0adffb3f9c86a6ec8245f8399d540823?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/0adffb3f9c86a6ec8245f8399d540823?s=96&d=mm&r=g\",\"caption\":\"Steve Bonisteel\"},\"description\":\"Steve Bonisteel is a Technical Editor at Kinsta who began his writing career as a print journalist, chasing ambulances and fire trucks. He has been covering Internet-related technology since the late 1990s.\",\"url\":\"https:\/\/kinsta.com\/fr\/blog\/author\/stevebonisteel\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Comment utiliser le client int\u00e9gr\u00e9 de Laravel pour interagir avec des API externes ? - Kinsta\u00ae","description":"Plongez avec nous et explorez l'utilisation du client HTTP de Laravel pour effectuer des requ\u00eates, d\u00e9boguer les r\u00e9ponses, cr\u00e9er des middlewares et des macros, et plus encore.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/kinsta.com\/fr\/blog\/laravel-http\/","og_locale":"fr_FR","og_type":"article","og_title":"Comment utiliser le client int\u00e9gr\u00e9 de Laravel pour interagir avec des API externes ?","og_description":"Plongez avec nous et explorez l'utilisation du client HTTP de Laravel pour effectuer des requ\u00eates, d\u00e9boguer les r\u00e9ponses, cr\u00e9er des middlewares et des macros, et plus encore.","og_url":"https:\/\/kinsta.com\/fr\/blog\/laravel-http\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinstafrance\/","article_published_time":"2023-04-28T15:47:47+00:00","article_modified_time":"2023-11-03T02:59:03+00:00","og_image":[{"width":3042,"height":1521,"url":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/04\/laravel-http.jpg","type":"image\/jpeg"}],"author":"Steve Bonisteel","twitter_card":"summary_large_image","twitter_description":"Plongez avec nous et explorez l'utilisation du client HTTP de Laravel pour effectuer des requ\u00eates, d\u00e9boguer les r\u00e9ponses, cr\u00e9er des middlewares et des macros, et plus encore.","twitter_image":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/04\/laravel-http.jpg","twitter_creator":"@kinsta_fr","twitter_site":"@kinsta_fr","twitter_misc":{"\u00c9crit par":"Steve Bonisteel","Dur\u00e9e de lecture estim\u00e9e":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/fr\/blog\/laravel-http\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/fr\/blog\/laravel-http\/"},"author":{"name":"Steve Bonisteel","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/person\/d84ceff87bd64a4368a581fc8aa8bd6f"},"headline":"Comment utiliser le client int\u00e9gr\u00e9 de Laravel pour interagir avec des API externes ?","datePublished":"2023-04-28T15:47:47+00:00","dateModified":"2023-11-03T02:59:03+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/fr\/blog\/laravel-http\/"},"wordCount":1344,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/fr\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/fr\/blog\/laravel-http\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/04\/laravel-http.jpg","inLanguage":"fr-FR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/fr\/blog\/laravel-http\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/fr\/blog\/laravel-http\/","url":"https:\/\/kinsta.com\/fr\/blog\/laravel-http\/","name":"Comment utiliser le client int\u00e9gr\u00e9 de Laravel pour interagir avec des API externes ? - Kinsta\u00ae","isPartOf":{"@id":"https:\/\/kinsta.com\/fr\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/fr\/blog\/laravel-http\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/fr\/blog\/laravel-http\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/04\/laravel-http.jpg","datePublished":"2023-04-28T15:47:47+00:00","dateModified":"2023-11-03T02:59:03+00:00","description":"Plongez avec nous et explorez l'utilisation du client HTTP de Laravel pour effectuer des requ\u00eates, d\u00e9boguer les r\u00e9ponses, cr\u00e9er des middlewares et des macros, et plus encore.","breadcrumb":{"@id":"https:\/\/kinsta.com\/fr\/blog\/laravel-http\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/fr\/blog\/laravel-http\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinsta.com\/fr\/blog\/laravel-http\/#primaryimage","url":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/04\/laravel-http.jpg","contentUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/04\/laravel-http.jpg","width":3042,"height":1521,"caption":"Comment utiliser le client int\u00e9gr\u00e9 de Laravel pour interagir avec des API externes ?"},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/fr\/blog\/laravel-http\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/fr\/"},{"@type":"ListItem","position":2,"name":"Laravel","item":"https:\/\/kinsta.com\/fr\/sujets\/laravel\/"},{"@type":"ListItem","position":3,"name":"Comment utiliser le client int\u00e9gr\u00e9 de Laravel pour interagir avec des API externes ?"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/fr\/#website","url":"https:\/\/kinsta.com\/fr\/","name":"Kinsta\u00ae","description":"Solutions d&#039;h\u00e9bergement premium, rapides et s\u00e9curis\u00e9es","publisher":{"@id":"https:\/\/kinsta.com\/fr\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/fr\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/fr\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/fr\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kinstafrance\/","https:\/\/x.com\/kinsta_fr","https:\/\/www.instagram.com\/kinstahosting\/","https:\/\/www.linkedin.com\/company\/kinsta\/","https:\/\/www.pinterest.com\/kinstahosting\/","https:\/\/www.youtube.com\/c\/Kinsta"]},{"@type":"Person","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/person\/d84ceff87bd64a4368a581fc8aa8bd6f","name":"Steve Bonisteel","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/0adffb3f9c86a6ec8245f8399d540823?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/0adffb3f9c86a6ec8245f8399d540823?s=96&d=mm&r=g","caption":"Steve Bonisteel"},"description":"Steve Bonisteel is a Technical Editor at Kinsta who began his writing career as a print journalist, chasing ambulances and fire trucks. He has been covering Internet-related technology since the late 1990s.","url":"https:\/\/kinsta.com\/fr\/blog\/author\/stevebonisteel\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts\/68734","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/users\/259"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/comments?post=68734"}],"version-history":[{"count":8,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts\/68734\/revisions"}],"predecessor-version":[{"id":68755,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts\/68734\/revisions\/68755"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/68734\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/68734\/translations\/it"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/68734\/translations\/fr"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/68734\/translations\/pt"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/68734\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/68734\/translations\/jp"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/68734\/translations\/nl"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/68734\/translations\/es"},{"embeddable":true,"hreflang":"sv","title":"Swedish","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/68734\/translations\/se"},{"embeddable":true,"hreflang":"da","title":"Danish","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/68734\/translations\/dk"},{"href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/68734\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/media\/68735"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/media?parent=68734"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/tags?post=68734"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/topic?post=68734"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}