Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In één oogopslag
Doel: Fouten in uw toepassing opsporen terwijl Dev Proxy API-fouten simuleert
Tijd: 15 minuten
Plugins:GenericRandomErrorPlugin
Vereisten: Dev Proxy instellen, VS Code instellen
Wanneer u toepassingen bouwt die API's aanroepen, moet u ervoor zorgen dat uw code fouten correct afhandelt. Door Dev Proxy te combineren met het foutopsporingsprogramma van Visual Studio (VS) Code, kunt u API-fouten simuleren en de code voor foutafhandeling doorlopen om te controleren of deze correct werkt.
Overzicht
Foutopsporing met Dev Proxy omvat drie stappen:
- VS Code configureren om HTTP-aanvragen te routeren via Dev Proxy
- Dev Proxy configureren om specifieke fouten te simuleren
- Installeer onderbrekingspunten in uw foutafhandelingscode en voer foutopsporing uit.
VS Code configureren voor foutopsporing met Dev Proxy
Hoe u VS Code configureert, is afhankelijk van de programmeertaal die u gebruikt. In de volgende secties ziet u hoe u VS Code configureert voor Node.js, .NET en Python toepassingen.
Node.js
Als u fouten wilt opsporen in een Node.js-toepassing met Dev Proxy, configureert u het bestand om de variabelen voor de proxyomgeving in te stellen en schakelt u verificatie van TLS/SSL-certificaten uit.
Bestand: .vscode/launch.json
{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Debug with Dev Proxy",
"skipFiles": [
"<node_internals>/**"
],
"program": "${workspaceFolder}/index.js",
"env": {
"NODE_ENV": "development",
"http_proxy": "http://127.0.0.1:8000",
"https_proxy": "http://127.0.0.1:8000",
"GLOBAL_AGENT_HTTP_PROXY": "http://127.0.0.1:8000",
"NODE_TLS_REJECT_UNAUTHORIZED": "0"
}
}
]
}
Belangrijk
Met de instelling wordt verificatie van TLS/SSL-certificaten uitgeschakeld. Gebruik deze instelling alleen tijdens de ontwikkeling. Voor een veiligere benadering kunt u het Dev Proxy-certificaat rechtstreeks vertrouwen:
macOS/Linux:
"NODE_EXTRA_CA_CERTS": "${env:HOME}/.devproxy/rootCert.pem"
Windows:
"NODE_EXTRA_CA_CERTS": "${env:USERPROFILE}\\.devproxy\\rootCert.pem"
De variabele wordt gebruikt door het pakket, dat proxyondersteuning biedt voor veel Node.js HTTP-bibliotheken. Zie Dev Proxy gebruiken met Node.js toepassingen voor meer informatie over het configureren van verschillende HTTP-bibliotheken.
.NET
.NET toepassingen automatisch de systeemproxy-instellingen gebruiken. Als u fouten wilt opsporen in een .NET-toepassing met Dev Proxy, hoeft u doorgaans geen omgevingsvariabelen in te stellen. Maak een eenvoudige foutopsporingsconfiguratie:
Bestand: .vscode/launch.json
{
"version": "0.2.0",
"configurations": [
{
"name": "Debug with Dev Proxy",
"type": "coreclr",
"request": "launch",
"preLaunchTask": "build",
"program": "${workspaceFolder}/bin/Debug/net8.0/MyApp.dll",
"args": [],
"cwd": "${workspaceFolder}",
"console": "internalConsole",
"stopAtEntry": false
}
]
}
Als uw toepassing de systeemproxy niet ophaalt, stelt u expliciet de proxyomgevingsvariabelen in:
Bestand: .vscode/launch.json (met expliciete proxy-instellingen)
{
"version": "0.2.0",
"configurations": [
{
"name": "Debug with Dev Proxy",
"type": "coreclr",
"request": "launch",
"preLaunchTask": "build",
"program": "${workspaceFolder}/bin/Debug/net8.0/MyApp.dll",
"args": [],
"cwd": "${workspaceFolder}",
"console": "internalConsole",
"stopAtEntry": false,
"env": {
"http_proxy": "http://127.0.0.1:8000",
"https_proxy": "http://127.0.0.1:8000"
}
}
]
}
Aanbeveling
In Windows en macOS vertrouwt .NET het Dev Proxy-certificaat automatisch als u het hebt geïnstalleerd als een vertrouwd basiscertificaat tijdens de Dev-proxy-installatie. In Linux moet u het certificaat mogelijk handmatig vertrouwen. Raadpleeg de documentatie van uw distributie voor het configureren van vertrouwde certificaten.
Python
Als u fouten wilt opsporen in een Python-toepassing met Dev Proxy, configureert u het bestand launch.json om de proxyomgevingsvariabelen in te stellen. De configuratie is afhankelijk van of u de bibliotheek of andere HTTP-bibliotheken gebruikt.
Bestand: .vscode/launch.json
{
"version": "0.2.0",
"configurations": [
{
"name": "Debug with Dev Proxy",
"type": "debugpy",
"request": "launch",
"program": "${workspaceFolder}/main.py",
"console": "integratedTerminal",
"env": {
"HTTP_PROXY": "http://127.0.0.1:8000",
"HTTPS_PROXY": "http://127.0.0.1:8000",
"REQUESTS_CA_BUNDLE": ""
}
}
]
}
Belangrijk
Als u een variabele op een lege tekenreeks instelt, geeft u aan de bibliotheek door dat TLS/SSL-certificaatverificatie moet worden overgeslagen. Gebruik deze instelling alleen tijdens de ontwikkeling.
Voor een veiligere benadering wijst u het Dev Proxy-certificaat aan:
macOS/Linux:
"REQUESTS_CA_BUNDLE": "${env:HOME}/.devproxy/rootCert.pem"
Windows:
"REQUESTS_CA_BUNDLE": "${env:USERPROFILE}\\.devproxy\\rootCert.pem"
Als u de bibliotheek gebruikt, configureert u in plaats daarvan TLS/SSL-verificatie met behulp van de omgevingsvariabele:
{
"env": {
"HTTP_PROXY": "http://127.0.0.1:8000",
"HTTPS_PROXY": "http://127.0.0.1:8000",
"TLS/SSL_CERT_FILE": "${env:HOME}/.devproxy/rootCert.pem"
}
}
Dev Proxy configureren om fouten te simuleren
Als u foutafhandeling wilt opsporen, configureert u Dev Proxy om specifieke fouten te retourneren wanneer uw app API's aanroept. Gebruik de GenericRandomErrorPlugin om fouten zoals
Een 429-fout (te veel aanvragen) simuleren
Maak een Dev Proxy configuratiebestand dat throttling simuleert:
Bestand: devproxyrc.json
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v3.1.0/rc.schema.json",
"plugins": [
{
"name": "GenericRandomErrorPlugin",
"enabled": true,
"pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
"configSection": "errorsConfig"
}
],
"urlsToWatch": [
"https://api.contoso.com/*"
],
"rate": 100,
"errorsConfig": {
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v3.1.0/genericrandomerrorplugin.schema.json",
"errorsFile": "errors.json"
}
}
Maak het foutenbestand met de specifieke foutreacties:
Bestand: errors.json
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v3.1.0/genericrandomerrorplugin.errorsfile.schema.json",
"errors": [
{
"request": {
"url": "https://api.contoso.com/*"
},
"responses": [
{
"statusCode": 429,
"headers": [
{
"name": "content-type",
"value": "application/json"
},
{
"name": "Retry-After",
"value": "60"
}
],
"body": {
"error": {
"code": "TooManyRequests",
"message": "Rate limit exceeded. Retry after 60 seconds."
}
}
}
]
}
]
}
Aanbeveling
Stel de waarde in op om elke aanvraag te laten mislukken, zodat u tijdens het debuggen consistent uw foutafhandelingscode activeert. Verlaag de snelheid wanneer u intermitterende fouten wilt testen.
Een 500 simuleren (interne serverfout)
Als u serverfouten wilt simuleren, voegt u nog een foutbericht toe:
Bestand: errors.json (meerdere fouten)
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v3.1.0/genericrandomerrorplugin.errorsfile.schema.json",
"errors": [
{
"request": {
"url": "https://api.contoso.com/*"
},
"responses": [
{
"statusCode": 429,
"headers": [
{
"name": "content-type",
"value": "application/json"
},
{
"name": "Retry-After",
"value": "60"
}
],
"body": {
"error": {
"code": "TooManyRequests",
"message": "Rate limit exceeded. Retry after 60 seconds."
}
}
},
{
"statusCode": 500,
"headers": [
{
"name": "content-type",
"value": "application/json"
}
],
"body": {
"error": {
"code": "InternalServerError",
"message": "An unexpected error occurred."
}
}
}
]
}
]
}
Wanneer u meerdere foutreacties definieert, selecteert Dev Proxy er willekeurig een voor elke onderschepte aanvraag.
Fouten opsporen in de code voor foutafhandeling
Als VS Code en Dev Proxy zijn geconfigureerd, kunt u nu fouten opsporen in de code voor foutafhandeling.
Stap 1: Onderbrekingspunten instellen
Open uw broncode en stel onderbrekingspunten in uw foutcode in. Bijvoorbeeld in een Node.js toepassing:
async function fetchData() {
try {
const response = await fetch('https://api.contoso.com/data');
if (!response.ok) {
// Set a breakpoint here to debug error responses
throw new Error(`HTTP error: ${response.status}`);
}
return await response.json();
} catch (error) {
// Set a breakpoint here to debug exceptions
console.error('Failed to fetch data:', error);
throw error;
}
}
Stap 2: Dev Proxy starten
Start Dev Proxy met uw configuratiebestand:
devproxy --config-file devproxyrc.json
Stap 3: Debuggen starten in VS Code
- VS Code openen
- Druk op F5 of selecteer Uitvoeren Start Foutopsporing
- Wanneer uw toepassing een API-aanroep doet, onderschept Dev Proxy deze en retourneert een fout
- VS Code pauzeert op uw onderbrekingspunt
- Gebruik de bedieningselementen voor debuggen om stap voor stap door uw code te gaan en variabelen te inspecteren.
Stap 4: De fout controleren
Wanneer VS Code wordt onderbroken op uw onderbrekingspunt, gebruikt u het deelvenster voor foutopsporing om het volgende te doen:
- De statuscode en het bericht van de foutreactie weergeven
- De waarden van lokale variabelen controleren
- Uw logica voor opnieuw proberen doorlopen
- Controleer of uw foutberichten gebruiksvriendelijk zijn
Dev Proxy automatisch starten en stoppen
Als u uw foutopsporingswerkstroom wilt stroomlijnen, configureert u VS Code om automatisch Dev Proxy te starten wanneer u de foutopsporing start en stopt wanneer u klaar bent. Installeer de Dev Proxy Toolkit-extensie en configureer taken:
Bestand: .vscode/tasks.json
{
"version": "2.0.0",
"tasks": [
{
"label": "devproxy-start",
"type": "devproxy",
"command": "start",
"args": [
"--config-file",
"devproxyrc.json"
],
"isBackground": true,
"problemMatcher": "$devproxy-watch"
},
{
"label": "devproxy-stop",
"type": "devproxy",
"command": "stop"
}
]
}
Als u deze taken wilt gebruiken, werkt u het volgende bij:
Bestand: .vscode/launch.json (Node.js met autostart)
{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Debug with Dev Proxy",
"skipFiles": [
"<node_internals>/**"
],
"program": "${workspaceFolder}/index.js",
"preLaunchTask": "devproxy-start",
"postDebugTask": "devproxy-stop",
"env": {
"NODE_ENV": "development",
"http_proxy": "http://127.0.0.1:8000",
"https_proxy": "http://127.0.0.1:8000",
"GLOBAL_AGENT_HTTP_PROXY": "http://127.0.0.1:8000",
"NODE_TLS_REJECT_UNAUTHORIZED": "0"
}
}
]
}
Tips voor effectieve foutopsporing
- Als u uw onderbrekingspunten consistent wilt bereiken, stelt u deze in uw Dev Proxy-configuratie in, zodat elke aanvraag mislukt.
- Als u wilt weten hoe uw code een specifieke fout verwerkt, gebruikt u één foutreactie bij het opsporen van fouten.
- Als u wilt controleren of uw code beperkingen respecteert, controleert u of deze de header leest en volgt bij het opsporen van 429-fouten.
- Als u ervoor wilt zorgen dat uw code ongebruikelijke antwoorden correct verwerkt, gebruikt u Dev Proxy om edge-gevallen te simuleren, zoals ongeldige JSON of ontbrekende headers.
- Als u alleen bepaalde fouten wilt verbreken, gebruikt u voorwaardelijke onderbrekingspunten in VS Code door met de rechtermuisknop op een onderbrekingspunt te klikken en een voorwaarde toe te voegen, zoals .
Zie ook
- Dev Proxy gebruiken met Visual Studio Code foutopsporingsconfiguraties - Autostart Dev Proxy in VS Code
- Mijn app testen met willekeurige fouten - willekeurige API-fouten simuleren
- Foutpercentage van wijzigingsaanvraag - aanpassen hoe vaak fouten optreden
- Dev Proxy gebruiken met Node.js toepassingen - Node.js proxyconfiguratie
- Dev Proxy gebruiken met .NET toepassingen - .NET proxyconfiguratie