Identifiera skugg-API:er med dev proxy
Med Azure API Center katalogiserar du API:er som används i din organisation. På så sätt kan du se vilka API:er du använder, var API:et finns i dess livscykel och vem du ska kontakta om det finns problem. Kort och kort, att ha en uppdaterad katalog med API:er hjälper dig att förbättra styrnings-, efterlevnads- och säkerhetsstatusen.
När du skapar din app, särskilt om du integrerar nya scenarier, kanske du använder API:er som inte är registrerade i Azure API Center. Dessa API:er kallas skugg-API:er. Skugg-API:er är API:er som inte är registrerade i din organisation. De kan vara API:er som ännu inte har registrerats, eller så kan de vara API:er som inte är avsedda att användas i din organisation.
Ett sätt att söka efter skugg-API:er är att använda Dev Proxy. Dev Proxy är en API-simulator som fångar upp och analyserar API-begäranden från program. En funktion i Dev Proxy är att kontrollera om de snappade API-begäranden tillhör API:er som är registrerade i API Center.
Innan du börjar
För att identifiera skugg-API:er måste du ha en Azure API Center-instans med information om de API:er som du använder i din organisation. Om du inte redan har skapat ett kan du läsa Snabbstart: Skapa ditt API-center. Dessutom måste du installera Dev Proxy.
Kopiera API Center-information
På sidan Översikt för Azure API Center-instans kopierar du namnet på API Center-instansen, namnet på resursgruppen och prenumerations-ID :t. Du behöver den här informationen för att konfigurera Dev Proxy ApiCenterOnboardingPlugin
så att den kan ansluta till din Azure API Center-instans.
Konfigurera Dev Proxy
För att kontrollera om din app använder skugg-API:er måste du aktivera ApiCenterOnboardingPlugin
i konfigurationsfilen för Dev Proxy. Om du vill skapa en rapport över API:er som appen använder lägger du till en reporter.
Aktivera ApiCenterOnboardingPlugin
devproxyrc.json
Lägg till följande konfiguration i filen:
{
"$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
}
}
subscriptionId
I egenskaperna , resourceGroupName
och serviceName
anger du information om din Azure API Center-instans.
I egenskapen urlsToWatch
anger du de URL:er som appen använder.
Dricks
Använd Tillägget Dev Proxy Toolkit Visual Studio Code för att enkelt hantera Dev Proxy-konfiguration.
Lägga till en reporter
ApiCenterOnboardingPlugin
Genererar en rapport över API:er som din app använder. Om du vill visa den här rapporten lägger du till en reporter i dev proxy-konfigurationsfilen. Dev Proxy erbjuder flera reportrar. I det här exemplet använder du oformaterad textreporter.
devproxyrc.json
Uppdatera filen med en referens till oformaterad textreporter:
{
"$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
}
}
Kontrollera om appen använder skugg-API:er
Om du vill kontrollera om din app använder skugg-API:er ansluter du till din Azure-prenumeration, kör Dev Proxy och låter den fånga upp API-begäranden från din app. Dev Proxy jämför sedan informationen om API-begäranden med informationen från Azure API Center och rapporter om eventuella API:er som inte är registrerade i API Center.
Ansluta till din Azure-prenumeration
Dev Proxy använder information från Azure API Center för att avgöra om din app använder skugg-API:er. För att få den här informationen behöver den en anslutning till din Azure-prenumeration. Du kan ansluta till din Azure-prenumeration på flera sätt.
Kör Dev Proxy
När du har anslutit till din Azure-prenumeration startar du Dev Proxy. Om du startar Dev Proxy från samma mapp där devproxyrc.json
filen finns läser den in konfigurationen automatiskt. Annars anger du sökvägen till konfigurationsfilen med hjälp av --config-file
alternativet .
När Dev Proxy startar kontrollerar den att den kan ansluta till din Azure-prenumeration. När anslutningen lyckas visas ett meddelande som liknar:
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
Tryck på r för att börja spela in API-begäranden från din app.
Använda appen
Använd din app som vanligt. Dev Proxy fångar upp API-begäranden och lagrar information om dem i minnet. På kommandoraden där Dev Proxy körs bör du se information om API-begäranden som appen gör.
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
Kontrollera skugg-API:er
Stoppa inspelningen genom att trycka på s. Dev Proxy ansluter till API Center-instansen och jämför informationen om begäranden med informationen från API Center.
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...
När Dev Proxy har slutfört analysen skapas en rapport i en fil med namnet ApiCenterOnboardingPlugin_PlainTextReporter.txt
med följande innehåll:
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
Registrera skugg-API:er automatiskt
Kan ApiCenterOnboardingPlugin
inte bara identifiera skugg-API:er, utan också automatiskt registrera dem i API Center. Om du vill registrera skugg-API:er automatiskt uppdaterar du till true
i konfigurationsfilen createApicEntryForNewApis
Dev Proxy .
{
"$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
}
}
När du kör Dev Proxy med createApicEntryForNewApis
inställt på true
skapas automatiskt nya API-poster i Azure API Center för de skugg-API:er som identifieras.
Registrera skugg-API:er automatiskt med OpenAPI-specifikation
När du väljer att automatiskt registrera skugg-API:er till API Center kan du låta Dev Proxy generera OpenAPI-specifikationen för API:et. Registrering av API:er med OpenAPI-specifikationer påskyndar registrering av saknade slutpunkter och ger dig nödvändig information om API:et. När identifierar ApiCenterOnboardingPlugin
, att Dev Proxy skapade en ny OpenAPI-specifikation, associeras den med motsvarande registrerade API i API Center.
Om du vill generera OpenAPI-specifikationer automatiskt för registrerade API:er uppdaterar du Dev Proxy-konfigurationen så att den OpenApiSpecGeneratorPlugin
innehåller .
{
"$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
}
}
Viktigt!
Dev Proxy kör plugin-program i den ordning de registreras i konfigurationen. Du måste registrera den OpenApiSpecGeneratorPlugin
första så att den kan skapa OpenAPI-specifikationer innan de ApiCenterOnboardingPlugin
nya API:erna registreras.
När du kör Dev Proxy med den här konfigurationen skapas automatiskt nya API-poster i Azure API Center för de skugg-API:er som identifieras. För varje nytt API genererar Dev Proxy en OpenAPI-specifikation och associerar den med motsvarande registrerade API i API Center.
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
Sammanfattning
Med Dev Proxy och dess ApiCenterOnboardingPlugin
kan du kontrollera om appen använder skugg-API:er. Plugin-programmet analyserar API-begäranden från din app och rapporterar om api-begäranden som inte är registrerade i Azure API Center. Med plugin-programmet kan du enkelt registrera saknade API:er i API Center. Genom att kombinera ApiCenterOnboardingPlugin
plugin-programmet med OpenApiSpecGeneratorPlugin
kan du automatiskt generera OpenAPI-specifikationer för de nyligen registrerade API:erna. Du kan köra den här kontrollen manuellt eller integrera med din CI/CD-pipeline för att säkerställa att din app använder registrerade API:er innan den släpps till produktion.