


Guzzle est un client HTTP PHP populaire qui facilite l'envoi de requêtes HTTP et la création de bibliothèques de services Web. Les frameworks PHP les plus populaires fournissent un service client Http interne, et ils constituent simplement une implémentation personnalisée du client Http Guzzle :
- Client HTTP Laravel
- Client HTTP Symfony
- Client Http Laminas (anciennement Zend Framework)
Guzzle est largement utilisé pour deux raisons principales :
1) Personnalisation et flexibilité
Pour les fans de design patterns, Guzzle est ouvert aux extensions. Cela signifie que vous pouvez facilement implémenter de nouvelles fonctionnalités dans Guzzle en étendant ses composants principaux (client HTTP, requête, réponse, Milddeware, etc.).
2) Prise en charge du middleware
Le système middleware Guzzle permet aux développeurs d'interagir avec une requête avant qu'elle ne soit envoyée et avec une réponse avant qu'elles ne soient traitées. Il peut activer des fonctionnalités avancées telles que la journalisation, l'authentification et la gestion des erreurs.
Introduction au client HTTP Guzzle
Dans ce tutoriel, je vais vous guider tout au long du processus de création d'un client Http Guzzle personnalisé pour faciliter la surveillance de chaque demande effectuée à partir de votre application par rapport à des services externes.
Je vais également vous montrer comment injecter cette implémentation dans le conteneur IoC (ou Services Container) pour rendre cette implémentation disponible dans toute votre application.
Nous aborderons les bases, les options de personnalisation et fournirons de vrais exemples de code.
Installer Guzzle
Assurez-vous que Guzzle est installé. Sinon, installez-le à l'aide de Composer :
composer require guzzlehttp/guzzle
Personnalisation de base
Commençons par créer un client Http Guzzle personnalisé de base :
namespace App\Extensions\Guzzle; use GuzzleHttp\Client; class CustomGuzzleClient extends Client { public function __construct(array $config = []) { $config['headers']['Custom-Header'] = 'Custom-Value'; parent::__construct($config); } }
Dans cet exemple, nous étendons la classe Guzzle Http Client et personnalisons le constructeur pour ajouter un en-tête personnalisé à toutes les requêtes faites par ce client.
Surveiller les requêtes HTTP de Guzzle
Guzzle fournit des méthodes de raccourci pour exécuter des requêtes HTTP :
$client->get('/endpoint'); $client->post('/endpoint'); $client->put('/endpoint');
Toutes ces méthodes utilisent la méthode de requête générique à l'intérieur. La capture d'écran ci-dessous a été prise à partir du code client Guzzle :
Vous pouvez surcharger la méthode request pour personnaliser la gestion des appels HTTP effectués par votre application vers des services externes.
namespace App\Extensions\Guzzle; use GuzzleHttp\Client; use GuzzleHttp\Exception\RequestException; class CustomGuzzleClient extends Client { public function request($method, $uri, array $options = []) { return inspector()->addSegment(function () use ($method, $uri, $options) { return parent::request($method, $uri, $options); }, "http", "{$method} {$uri}"); } }
Dans cet exemple, j'ajoute simplement un nouvel élément dans la chronologie de la transaction pour chaque demande. Vous pouvez maintenant voir les appels API effectués par Guzzle dans votre vue de surveillance :
Si vous êtes nouveau sur Inspector, vous pouvez suivre ce tutoriel pour commencer :
https://inspector.dev/laravel-real-time-performance-monitoring-using-inspector-part-1/
Vous pouvez également injecter le paramètre Segment dans le rappel pour interagir avec l'élément ou ajouter plus d'informations :
namespace App\Extensions\Guzzle; use GuzzleHttp\Client; use GuzzleHttp\Exception\RequestException; use Inspector\Models\Segment; class CustomGuzzleClient extends Client { public function request($method, $uri, array $options = []) { return inspector()->addSegment(function (Segment $segment) use ($method, $uri, $options) { $response = parent::request($method, $uri, $options); $segment->label = "{$response->getStatusCode()} {$method} {$uri}"; return $response; }, "http"); } }
Utilisez le client HTTP personnalisé
Vous pouvez désormais utiliser votre client personnalisé dans votre application. Étant donné que l'extension n'introduit aucun changement dans le comportement du client Http Guzzle standard, vous pouvez créer une instance de la classe personnalisée et l'utiliser comme d'habitude :
// Create an instance of the custom client $client = new CustomGuzzleClient(['base_uri' => 'https://api.example.com']); // Make an API request. It will be automatically monitored by Inspector. $response = $client->get('/endpoint');
Liez le client Guzzle Http dans le conteneur
Je vais utiliser Laravel dans cet exemple, mais le concept de base est le même pour les frameworks PHP les plus populaires mentionnés au début de l'article. Tous fonctionnent avec un conteneur de services.
Nous créons une liaison singleton dans le conteneur pour la classe Guzzle Http Client. Ainsi, chaque service qui demande cette classe recevra une instance de notre client personnalisé prenant en charge la surveillance en temps réel.
use GuzzleHttp\Client; use App\Extensions\Guzzle\CustomGuzzleClient; use Illuminate\Contracts\Foundation\Application; $this->app->singleton(Client::class, function (Application $app) { return new CustomGuzzleClient(); });
Vous pouvez maintenant essayer d'injecter la classe Guzzle Http Client dans une commande Artisan et exécuter un appel Http juste à des fins de test :
namespace App\Console\Commands; use Illuminate\Console\Command; use GuzzleHttp\Client; class TryCommand extends Command { /** * The name and signature of the console command. * * @var string */ protected $signature = 'try'; /** * The console command description. * * @var string */ protected $description = 'Test Guzzle Http Client monitoring.'; /** * Inject the Guzzle Http Client class into the constructor. * The CustomGuzzleClient will be the concrete class. */ public function __construct(protected Client $client) { parent::__construct(); } /** * Handle the command execution. */ public function handle() { $this->line($this->description); $this->line("Concrete class: ".get_class($this->client)); $this->client->get('https://google.com'); return Command::SUCCESS; } }
Exécutez la commande pour vérifier si l'appel Http sera visible dans la chronologie de la transaction :
php artisan try
Nouveau comme inspecteur ? Surveillez votre candidature gratuitement
Inspector est un outil de surveillance de l'exécution de code spécialement conçu pour les développeurs de logiciels. Vous n'avez pas besoin d'installer quoi que ce soit dans votre infrastructure cloud ou vos serveurs, installez simplement le package composer et vous êtes prêt à partir.
Contrairement à d'autres plates-formes complexes tout-en-un, Inspector est super simple et compatible PHP. Vous pouvez essayer notre package Laravel ou Symfony.
Si vous recherchez une automatisation efficace, des informations approfondies et la possibilité de transférer des alertes et des notifications dans votre environnement de messagerie, essayez Inspector gratuitement. Enregistrez votre compte.
Ou apprenez-en plus sur le site : https://inspector.dev
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Les longues URL, souvent encombrées de mots clés et de paramètres de suivi, peuvent dissuader les visiteurs. Un script de raccourcissement d'URL offre une solution, créant des liens concis idéaux pour les médias sociaux et d'autres plateformes. Ces scripts sont utiles pour les sites Web individuels

À la suite de son acquisition de haut niveau par Facebook en 2012, Instagram a adopté deux ensembles d'API pour une utilisation tierce. Ce sont l'API graphique Instagram et l'API d'affichage de base Instagram. En tant que développeur créant une application qui nécessite des informations à partir d'un

Laravel simplifie la gestion des données de session temporaires à l'aide de ses méthodes de flash intuitives. Ceci est parfait pour afficher de brefs messages, alertes ou notifications dans votre application. Les données ne persistent que pour la demande ultérieure par défaut: $ demande-

Il s'agit de la deuxième et dernière partie de la série sur la construction d'une application React avec un back-end Laravel. Dans la première partie de la série, nous avons créé une API RESTful utilisant Laravel pour une application de liste de base sur le produit. Dans ce tutoriel, nous serons Dev

Laravel fournit une syntaxe de simulation de réponse HTTP concise, simplifiant les tests d'interaction HTTP. Cette approche réduit considérablement la redondance du code tout en rendant votre simulation de test plus intuitive. L'implémentation de base fournit une variété de raccourcis de type de réponse: Utiliser illuminate \ support \ faades \ http; Http :: faux ([[ 'google.com' => 'Hello World', 'github.com' => ['foo' => 'bar'], 'forge.laravel.com' =>

L'extension PHP Client URL (CURL) est un outil puissant pour les développeurs, permettant une interaction transparente avec des serveurs distants et des API REST. En tirant parti de Libcurl, une bibliothèque de transfert de fichiers multi-protocol très respectée, PHP Curl facilite Efficient Execu

Voulez-vous fournir des solutions instantanées en temps réel aux problèmes les plus pressants de vos clients? Le chat en direct vous permet d'avoir des conversations en temps réel avec les clients et de résoudre leurs problèmes instantanément. Il vous permet de fournir un service plus rapide à votre personnalité

L'enquête sur le paysage PHP 2025 étudie les tendances actuelles de développement du PHP. Il explore l'utilisation du cadre, les méthodes de déploiement et les défis, visant à fournir des informations aux développeurs et aux entreprises. L'enquête prévoit la croissance de la PHP moderne versio


Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

DVWA
Damn Vulnerable Web App (DVWA) est une application Web PHP/MySQL très vulnérable. Ses principaux objectifs sont d'aider les professionnels de la sécurité à tester leurs compétences et leurs outils dans un environnement juridique, d'aider les développeurs Web à mieux comprendre le processus de sécurisation des applications Web et d'aider les enseignants/étudiants à enseigner/apprendre dans un environnement de classe. Application Web sécurité. L'objectif de DVWA est de mettre en pratique certaines des vulnérabilités Web les plus courantes via une interface simple et directe, avec différents degrés de difficulté. Veuillez noter que ce logiciel

Télécharger la version Mac de l'éditeur Atom
L'éditeur open source le plus populaire

Dreamweaver Mac
Outils de développement Web visuel

PhpStorm version Mac
Le dernier (2018.2.1) outil de développement intégré PHP professionnel

Listes Sec
SecLists est le compagnon ultime du testeur de sécurité. Il s'agit d'une collection de différents types de listes fréquemment utilisées lors des évaluations de sécurité, le tout en un seul endroit. SecLists contribue à rendre les tests de sécurité plus efficaces et productifs en fournissant facilement toutes les listes dont un testeur de sécurité pourrait avoir besoin. Les types de listes incluent les noms d'utilisateur, les mots de passe, les URL, les charges utiles floues, les modèles de données sensibles, les shells Web, etc. Le testeur peut simplement extraire ce référentiel sur une nouvelle machine de test et il aura accès à tous les types de listes dont il a besoin.
