Architecture du plug-in

Un plug-in est une classe .NET inscrite auprès du proxy de développement qui introduit un comportement spécifique du proxy de développement. Un plug-in peut fournir des conseils en temps réel sur l’utilisation de l’API, simuler le comportement de l’API, analyser plusieurs demandes d’API ou produire un rapport. Le proxy de développement a quatre types de plug-ins :

  • intercepter les plug-ins qui interceptent les requêtes et réponses HTTP et peuvent les analyser et les modifier
  • Plug-ins STDIO qui interceptent la communication stdin/stdout/stderr avec des exécutables locaux
  • les plug-ins de création de rapports qui s’exécutent sur des requêtes enregistrées par le proxy de développement
  • reporters qui génèrent des rapports basés sur les données collectées par les plug-ins de création de rapports

Vous inscrivez des plug-ins dans le fichier devproxyrc.json. Le fichier contient une liste de plug-ins à charger et leur configuration.

Le proxy de développement est fourni avec une collection de plug-ins et vous pouvez créer des plug-ins personnalisés pour étendre les fonctionnalités du proxy de développement en fonction de vos besoins.

Au démarrage du proxy de développement, il charge les plug-ins activés dans son fichier de configuration. Selon les plug-ins que vous activez, le proxy de développement peut fournir des conseils, simuler le comportement de l’API ou analyser les demandes d’API. Les sections suivantes expliquent comment fonctionnent les différents types de plug-ins.

Interception de plug-ins

Lorsque le proxy de développement intercepte une requête correspondant à l’une des URL du tableau urlsToWatch, il appelle chaque plug-in d’interception dans l’ordre dans lequel ils sont répertoriés dans le fichier de configuration. Chaque plug-in d’interception hérite de la BasePlugin classe et peut remplacer les méthodes suivantes :

  • BeforeRequestAsync - appelée lorsque le proxy de développement intercepte une requête
  • BeforeResponseAsync - appelé après que le proxy de développement reçoit une réponse du serveur
  • AfterResponseAsync - appelée après que le proxy de développement envoie la réponse au client

Dans chaque remplacement de méthode, le plug-in peut analyser la demande et la réponse, et la modifier si nécessaire. Il peut également générer des messages d’aide. Pour voir ce qui est possible, consultez le code des plug-ins fournis avec dev Proxy.

Plug-ins STDIO

Lorsque vous utilisez la stdio commande, les proxys Dev Proxy STDIN/STDOUT/STDERR communiquent avec des exécutables locaux. Le proxy STDIO est utile pour tester et déboguer des serveurs MCP (Model Context Protocol) et d’autres applications STDIO.

Les plug-ins STDIO implémentent l’interface IStdioPlugin et peuvent s’abonner aux événements suivants :

  • BeforeStdinAsync - déclenché avant de transférer STDIN vers le processus enfant
  • AfterStdoutAsync - déclenché après réception de STDOUT à partir du processus enfant
  • AfterStderrAsync - déclenché après réception de STDERR à partir du processus enfant
  • AfterStdioRequestLogAsync - déclenché pour journaliser et enregistrer des paires de demandes/réponses STDIO
  • AfterStdioRecordingStopAsync - déclenché lorsque la session se termine pour traiter les enregistrements

Les plug-ins peuvent modifier, consommer ou simuler des messages en définissant ResponseState.HasBeenSet = true. Les plug-ins suivants prennent en charge l’interception STDIO :

Plug-ins de création de rapports

Le proxy de développement vous permet d’enregistrer les demandes et réponses de l’API. Vous utilisez généralement l’enregistrement pour signaler l’utilisation de l’API ou analyser plusieurs demandes d’API. Les plug-ins de création de rapports héritent de la BaseReportingPlugin classe et remplacent la AfterRecordingStopAsync méthode.

Lorsque vous arrêtez l’enregistrement, le proxy de développement appelle la AfterRecordingStopAsync méthode de chaque plug-in, en passant la liste des demandes et réponses enregistrées en tant qu’argument. Les plug-ins de création de rapports peuvent ensuite analyser les données enregistrées et générer un objet de rapport. Un objet de rapport est un objet arbitraire défini par le plug-in de création de rapports. Les plug-ins de création de rapports stockent les rapports en appelant la méthode StoreReport.

Important

Les plug-ins de création de rapports génèrent des objets de rapport, que le proxy de développement stocke en mémoire. Pour convertir ces objets de rapport en rapports lisibles par l’utilisateur, vous devez activer un ou plusieurs reporters dans le fichier de configuration du proxy de développement.

Journalistes

Le proxy de développement utilise reporters pour convertir les objets de rapport générés par des plug-ins de création de rapports en rapports lisibles par l’utilisateur. Par exemple, le MarkdownReporter convertit un objet de rapport en fichier Markdown. Les reporters sont des plug-ins spéciaux qui héritent de la classe BaseReporter. Ils implémentent la méthode GetReport, qui prend comme argument un rapport créé par un plug-in de création de rapports et le convertit en chaîne. Cette chaîne est ensuite enregistrée sur le disque en suivant le modèle PluginName_ReporterName.ReporterExtension, par exemple : ApiCenterOnboardingPlugin_MarkdownReporter.md.

Important

Étant donné que les reporters dépendent des objets de rapport générés par des plug-ins de création de rapports, vous devez activer les reporters dans le fichier de configuration du proxy de développement après les plug-ins de création de rapports. Si vous les activez avant de signaler des plug-ins, les journalistes n’ont pas de données à signaler.