Partager via


Découvrir les API fantômes à l’aide de Dev Proxy

À l’aide du Centre API de Microsoft Azure, vous cataloguez les API utilisées dans votre organisation. Cela vous permet de savoir quelles API vous utilisez, où elles trouvent dans leur cycle de vie, et qui doit contacter s’il y a des problèmes. En bref, disposer d’un catalogue à jour d’API vous aide à améliorer la posture de gouvernance, de conformité et de sécurité.

Lors de la création de votre application, en particulier si vous intégrez de nouveaux scénarios, il se peut que vous utilisiez des API qui ne sont pas inscrites dans le Centre API Azure. Ces API sont appelées API fantômes. Les API fantômes sont des API qui ne sont pas inscrites dans votre organisation. Il peut s’agir d’API qui ne sont pas encore inscrites, ou d’API qui ne sont pas censées être utilisées dans votre organisation.

L’une des façons de vérifier la présence d’API fantômes consiste à utiliser Dev Proxy. Dev Proxy est un simulateur d’API qui intercepte et analyse les requêtes d’API provenant d’applications. L’une des fonctionnalités de Dev Proxy consiste à vérifier si les requêtes d’API interceptées appartiennent à des API inscrites dans le Centre API.

Capture d’écran d’une invite de commandes montrant Dev Proxy vérifiant si les requêtes d’API enregistrées sont inscrites dans le Centre API Azure.

Avant de commencer

Pour détecter les API fantômes, vous devez disposer d’une instance du Centre API Azure avec des informations sur les API que vous utilisez dans votre organisation. Si vous n’en avez pas encore créé, consultez Démarrage rapide : Créer votre centre d’API. En outre, vous devez installer Dev Proxy.

Copier les informations du Centre API

Dans la page Vue d’ensemble de l’instance du Centre API Azure, copiez le nom de l’instance du Centre API, le nom du groupe de ressources et l’ID d’abonnement. Vous avez besoin de ces informations pour configurer le ApiCenterOnboardingPlugin Dev Proxy afin qu’il puisse se connecter à votre instance du Centre API Azure.

Capture d’écran de la page de vue d’ensemble du Centre API Azure avec plusieurs propriétés mises en surbrillance.

Configurer Dev Proxy

Pour vérifier si votre application utilise des API fantômes, vous devez activer le ApiCenterOnboardingPlugin dans le fichier de configuration Dev Proxy. Pour créer un rapport sur les API utilisées par votre application, ajoutez un rapporteur.

Activer le ApiCenterOnboardingPlugin

Dans le fichier devproxyrc.json, ajoutez la configuration suivante :

{
  "$schema": "https://raw.githubusercontent.com/microsoft/dev-proxy/main/schemas/v0.19.0/rc.schema.json",
  "plugins": [
    {
      "name": "ApiCenterOnboardingPlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/dev-proxy-plugins.dll",
      "configSection": "apiCenterOnboardingPlugin"
    }
  ],
  "urlsToWatch": [
    "https://jsonplaceholder.typicode.com/*"
  ],
  "apiCenterOnboardingPlugin": {
    "subscriptionId": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
    "resourceGroupName": "demo",
    "serviceName": "contoso-api-center",
    "workspaceName": "default",
    "createApicEntryForNewApis": false
  }
}

Dans les propriétés subscriptionId, resourceGroupName et serviceName, fournissez les informations relatives à votre instance du Centre API Azure.

Dans la propriété urlsToWatch, spécifiez les URL que votre application utilise.

Conseil

Utilisez l’extension Visual Studio Code Dev Proxy Toolkit pour gérer facilement la configuration Dev Proxy.

Ajouter un rapporteur

Le ApiCenterOnboardingPlugin produit un rapport sur les API utilisées par votre application. Pour afficher ce rapport, ajoutez un rapporteur à votre fichier de configuration Dev Proxy. Dev Proxy propose plusieurs rapporteurs. Dans cet exemple, vous utilisez le rapporteur en texte brut.

Mettez à jour votre fichier devproxyrc.json avec une référence au rapporteur en texte brut :

{
  "$schema": "https://raw.githubusercontent.com/microsoft/dev-proxy/main/schemas/v0.19.0/rc.schema.json",
  "plugins": [
    {
      "name": "ApiCenterOnboardingPlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/dev-proxy-plugins.dll",
      "configSection": "apiCenterOnboardingPlugin"
    },
    {
      "name": "PlainTextReporter",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/dev-proxy-plugins.dll"
    }
  ],
  "urlsToWatch": [
    "https://jsonplaceholder.typicode.com/*"
  ],
  "apiCenterOnboardingPlugin": {
    "subscriptionId": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
    "resourceGroupName": "demo",
    "serviceName": "contoso-api-center",
    "workspaceName": "default",
    "createApicEntryForNewApis": false
  }
}

Vérifier si votre application utilise des API fantômes

Pour vérifier si votre application utilise des API fantômes, connectez-vous à votre abonnement Azure, exécutez Dev Proxy et laissez-le intercepter les requêtes d’API provenant de votre application. Dev Proxy compare ensuite les informations sur les requêtes d’API avec les informations du Centre API Azure, et signale les API qui ne sont pas inscrites dans le Centre API.

Connectez-vous à un abonnement Azure

Dev Proxy utilise les informations du Centre API Azure pour déterminer si votre application utilise des API fantômes. Pour obtenir ces informations, il a besoin d’une connexion à votre abonnement Azure. Vous pouvez vous connecter à votre abonnement Azure de plusieurs façons.

Exécuter Dev Proxy

Après vous être connecté à votre abonnement Azure, démarrez Dev Proxy. Si vous démarrez Dev Proxy à partir du dossier où se trouve votre fichier devproxyrc.json, il charge automatiquement la configuration. Sinon, spécifiez le chemin d’accès au fichier de configuration à l’aide de l’option --config-file.

Lors de son démarrage, Dev Proxy vérifie qu’il peut se connecter à votre abonnement Azure. Une fois la connexion établie, un message similaire à celui-ci s’affiche :

 info    Plugin ApiCenterOnboardingPlugin connecting to Azure...
 info    Listening on 127.0.0.1:8000...

Hotkeys: issue (w)eb request, (r)ecord, (s)top recording, (c)lear screen
Press CTRL+C to stop Dev Proxy

Appuyez sur r pour démarrer l’enregistrement des requêtes d’API provenant de votre application.

Utiliser votre application

Utilisez votre application comme vous le feriez normalement. Dev Proxy intercepte les requêtes d’API et stocke les informations sur celles-ci en mémoire. Sur la ligne de commande où Dev Proxy s’exécute, vous devez voir des informations sur les requêtes d’API effectuées par votre application.

 info    Plugin ApiCenterOnboardingPlugin connecting to Azure...
 info    Listening on 127.0.0.1:8000...

Hotkeys: issue (w)eb request, (r)ecord, (s)top recording, (c)lear screen
Press CTRL+C to stop Dev Proxy

◉ Recording... 

 req   ╭ GET https://jsonplaceholder.typicode.com/posts
 api   ╰ Passed through

 req   ╭ DELETE https://jsonplaceholder.typicode.com/posts/1
 api   ╰ Passed through

Vérifier les API fantômes

Arrêtez l’enregistrement en appuyant sur s. Dev Proxy se connecte à l’instance du Centre API, et compare les informations sur les requêtes aux informations contenues dans le Centre API.

 info    Plugin ApiCenterOnboardingPlugin connecting to Azure...
 info    Listening on 127.0.0.1:8000...

Hotkeys: issue (w)eb request, (r)ecord, (s)top recording, (c)lear screen
Press CTRL+C to stop Dev Proxy

◉ Recording... 

 req   ╭ GET https://jsonplaceholder.typicode.com/posts
 api   ╰ Passed through

 req   ╭ DELETE https://jsonplaceholder.typicode.com/posts/1
 api   ╰ Passed through
○ Stopped recording
 info    Checking if recorded API requests belong to APIs in API Center...
 info    Loading APIs from API Center...
 info    Loading API definitions from API Center...

Lorsque Dev Proxy termine son analyse, il crée un rapport dans un fichier nommé ApiCenterOnboardingPlugin_PlainTextReporter.txt avec le contenu suivant :

New APIs that aren't registered in Azure API Center:

https://jsonplaceholder.typicode.com:
  DELETE https://jsonplaceholder.typicode.com/posts/1

APIs that are already registered in Azure API Center:

GET https://jsonplaceholder.typicode.com/posts

Intégrer automatiquement des API fantômes

Le ApiCenterOnboardingPlugin peut non seulement détecter les API fantômes, mais également les intégrer automatiquement au Centre API. Pour intégrer automatiquement des API fantômes, dans le fichier de configuration Dev Proxy, affectez la valeur true à createApicEntryForNewApis.

{
  "$schema": "https://raw.githubusercontent.com/microsoft/dev-proxy/main/schemas/v0.19.0/rc.schema.json",
  "plugins": [
    {
      "name": "ApiCenterOnboardingPlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/dev-proxy-plugins.dll",
      "configSection": "apiCenterOnboardingPlugin"
    },
    {
      "name": "PlainTextReporter",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/dev-proxy-plugins.dll"
    }
  ],
  "urlsToWatch": [
    "https://jsonplaceholder.typicode.com/*"
  ],
  "apiCenterOnboardingPlugin": {
    "subscriptionId": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
    "resourceGroupName": "demo",
    "serviceName": "contoso-api-center",
    "workspaceName": "default",
    "createApicEntryForNewApis": true
  }
}

Lorsque vous exécutez Dev Proxy avec createApicEntryForNewApis défini sur true, il crée automatiquement de nouvelles entrées d’API dans le Centre API Azure pour les API fantômes qu’il détecte.

Capture d’écran du Centre API montrant une API nouvellement intégrée.

Intégrer automatiquement des API fantômes avec la spécification OpenAPI

Lorsque vous choisissez d’intégrer automatiquement des API fantômes au Centre API, vous pouvez faire en sorte que Dev Proxy génère la spécification OpenAPI pour l’API. L’intégration d’API avec des spécifications OpenAPI accélère l’intégration de points de terminaison manquants, et vous fournit les informations nécessaires sur l’API. Lorsque le ApiCenterOnboardingPlugin détecte que Dev Proxy a créé une nouvelle spécification OpenAPI, il l’associe à l’API intégrée correspondante dans le Centre API.

Pour générer automatiquement des spécifications OpenAPI pour les API intégrées, mettez à jour la configuration Dev Proxy de façon à inclure le OpenApiSpecGeneratorPlugin.

{
  "$schema": "https://raw.githubusercontent.com/microsoft/dev-proxy/main/schemas/v0.19.0/rc.schema.json",
  "plugins": [
    {
      "name": "OpenApiSpecGeneratorPlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/dev-proxy-plugins.dll"
    },
    {
      "name": "ApiCenterOnboardingPlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/dev-proxy-plugins.dll",
      "configSection": "apiCenterOnboardingPlugin"
    },
    {
      "name": "PlainTextReporter",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/dev-proxy-plugins.dll"
    }
  ],
  "urlsToWatch": [
    "https://jsonplaceholder.typicode.com/*"
  ],
  "apiCenterOnboardingPlugin": {
    "subscriptionId": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
    "resourceGroupName": "demo",
    "serviceName": "contoso-api-center",
    "workspaceName": "default",
    "createApicEntryForNewApis": true
  }
}

Important

Dev Proxy exécute les plug-ins dans l’ordre dans lequel ils sont inscrits dans la configuration. Vous devez inscrire le OpenApiSpecGeneratorPlugin en premier afin qu’il puisse créer des spécifications OpenAPI avant que le ApiCenterOnboardingPlugin intègre de nouvelles API.

Lorsque vous exécutez Dev Proxy avec cette configuration, il crée automatiquement de nouvelles entrées d’API dans le Centre API Azure pour les API fantômes qu’il détecte. Pour chaque nouvelle API, Dev Proxy génère une spécification OpenAPI et l’associe à l’API intégrée correspondante dans le Centre API.

 info    Plugin ApiCenterOnboardingPlugin connecting to Azure...
 info    Listening on 127.0.0.1:8000...

Hotkeys: issue (w)eb request, (r)ecord, (s)top recording, (c)lear screen
Press CTRL+C to stop Dev Proxy

◉ Recording... 

 req   ╭ GET https://jsonplaceholder.typicode.com/posts
 api   ╰ Passed through

 req   ╭ DELETE https://jsonplaceholder.typicode.com/posts/1
 api   ╰ Passed through
○ Stopped recording
 info    Creating OpenAPI spec from recorded requests...
 info    Created OpenAPI spec file jsonplaceholder.typicode.com-20240614104931.json
 info    Checking if recorded API requests belong to APIs in API Center...
 info    Loading APIs from API Center...
 info    Loading API definitions from API Center...
 info    New APIs that aren't registered in Azure API Center:

https://jsonplaceholder.typicode.com:
  DELETE https://jsonplaceholder.typicode.com/posts/1
 info    Creating new API entries in API Center...
 info      Creating API new-jsonplaceholder-typicode-com-1718354977 for https://jsonplaceholder.typicode.com...
 info    DONE

Capture d’écran du Centre API Azure montrant une API nouvellement intégrée avec une spécification OpenAPI.

Résumé

À l’aide de Dev Proxy et de son ApiCenterOnboardingPlugin, vous pouvez vérifier si votre application utilise des API fantômes. Le plug-in analyse les requêtes d’API de votre application, et signale les requêtes d’API qui ne sont pas inscrites dans le Centre API Azure. Le plug-in vous permet d’intégrer facilement des API manquantes au Centre API. En combinant le plug-in ApiCenterOnboardingPlugin avec le OpenApiSpecGeneratorPlugin, vous pouvez générer automatiquement des spécifications OpenAPI pour les API nouvellement intégrées. Vous pouvez exécuter cette vérification manuellement, ou l’intégrer à votre pipeline CI/CD pour vous assurer que votre application utilise des API inscrites avant de la publier en production.

Plus d’informations