Introduzione a Dev Proxy
Dev Proxy è uno strumento da riga di comando che consente di simulare comportamenti ed errori delle API cloud per creare app resilienti.
In questa esercitazione si apprenderà come installare, eseguire e configurare Il proxy di sviluppo.
Se si verificano problemi, non esitare a contattarci generando un nuovo problema e siamo lieti di aiutarvi.
Installare Dev Proxy
Il modo più semplice per installare Dev Proxy consiste nell'usare winget. In alternativa, è possibile installare manualmente Dev Proxy.
Per installare Dev Proxy usando winget, eseguire il comando seguente:
winget install Microsoft.DevProxy --silent
Importante
Il programma di installazione di Dev Proxy aggiunge una nuova voce a PATH. Per usare Dev Proxy dopo l'installazione, è necessario riavviare il prompt dei comandi per assicurarsi che le variabili di ambiente PATH siano state aggiornate.
Nota
Per provare le funzionalità di anteprima più recenti, installare la versione beta di Dev Proxy.
Per installare Dev Proxy usando winget, eseguire il comando seguente:
winget install Microsoft.DevProxy.Beta --silent
Per eseguire la versione beta di Dev Proxy usare devproxy-beta
Il modo più semplice per installare Dev Proxy consiste nell'usare Homebrew. In alternativa, è possibile installare manualmente Dev Proxy.
Per installare Dev Proxy con Homebrew, eseguire i comandi seguenti:
brew tap microsoft/dev-proxy
brew install dev-proxy
Nota
Per provare le funzionalità di anteprima più recenti, installare la versione beta di Dev Proxy.
Per installare Dev Proxy con Homebrew, eseguire i comandi seguenti:
brew tap microsoft/dev-proxy
brew install dev-proxy-beta
Per eseguire la versione beta di Dev Proxy usare devproxy-beta
Il modo più semplice per installare Dev Proxy consiste nell'usare lo script di installazione. In alternativa, è possibile installare manualmente Dev Proxy.
Per installare Dev Proxy usando lo script di installazione, eseguire i comandi seguenti:
bash -c "$(curl -sL https://aka.ms/devproxy/setup.sh)"
Se si usa PowerShell, eseguire il comando seguente:
(Invoke-WebRequest https://aka.ms/devproxy/setup.ps1).Content | Invoke-Expression
Nota
Per provare le funzionalità di anteprima più recenti, installare la versione beta di Dev Proxy.
Per installare Dev Proxy usando lo script di installazione, eseguire i comandi seguenti:
bash -c "$(curl -sL https://aka.ms/devproxy/setup-beta.sh)"
Se si usa PowerShell, eseguire il comando seguente:
(Invoke-WebRequest https://aka.ms/devproxy/setup-beta.ps1).Content | Invoke-Expression
Per eseguire la versione beta di Dev Proxy usare devproxy-beta
Avviare il proxy di sviluppo per la prima volta
La prima volta che si avvia Dev Proxy nel computer, è necessario eseguire alcuni passaggi per assicurarsi che Dev Proxy possa intercettare le richieste dal computer e rispondere correttamente. Non sarà necessario ripetere questi passaggi dopo la prima esecuzione.
- Avviare Il proxy di sviluppo. Aprire una sessione del prompt dei comandi. Immettere
devproxy
e premere Invio. - Certificato di attendibilità. Dev Proxy installa un certificato denominato
Dev Proxy CA
. Viene visualizzato un avviso. Selezionare questa opzioneYes
per confermare l'installazione del certificato. Dev Proxy usa questo certificato per decrittografare il traffico HTTPS inviato dal computer. - Consentire l'accesso al firewall. Windows Firewall blocca il proxy. Viene visualizzato un avviso. Selezionare
Allow access
il pulsante per consentire il traffico attraverso il firewall.
- Avviare Il proxy di sviluppo. Aprire una sessione del prompt dei comandi. Immettere
devproxy
e premere Invio. - Certificato di attendibilità. Dev Proxy installa un certificato denominato
Dev Proxy CA
, che usa per decrittografare il traffico HTTPS inviato dal computer. Viene visualizzato un avviso. Premere y per confermare che si vuole considerare attendibile il certificato. - Accettare connessioni in ingresso. Viene visualizzato un avviso. Selezionare questa opzione
Allow
per confermare.
Avviare Il proxy di sviluppo. Aprire una sessione del prompt dei comandi. Immettere
devproxy
e premere Invio.Certificato di attendibilità. Dev Proxy usa un certificato SSL personalizzato per decrittografare il traffico HTTPS inviato dal computer.
Importante
Le istruzioni seguenti sono per Ubuntu. Per altre distribuzioni linux, i passaggi potrebbero essere diversi.
Per installare e considerare attendibile il certificato, eseguire i comandi seguenti in un nuovo prompt dei comandi:
# Export Dev Proxy root certificate openssl pkcs12 -in ~/.config/dev-proxy/rootCert.pfx -clcerts -nokeys -out dev-proxy-ca.crt -passin pass:"" # Install the certificate sudo cp dev-proxy-ca.crt /usr/local/share/ca-certificates/ # Update certificates sudo update-ca-certificates
Il prompt dei comandi visualizza l'output seguente:
info 8 error responses loaded from devproxy-errors.json
info Dev Proxy API listening on http://localhost:8897...
info Dev Proxy 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
Per impostazione predefinita, Dev Proxy è configurato per:
- Intercettare le richieste effettuate a qualsiasi endpoint dell'API segnaposto JSON
- Simulare le risposte di errore dell'API e la limitazione delle API con una frequenza di errore del 50%
Intercettare le richieste
Dev Proxy intercetta le richieste effettuate agli URL noti da qualsiasi applicazione nel computer. Quando viene rilevata una richiesta, Dev Proxy passa la richiesta all'API (non eseguire alcuna azione) o restituisce una risposta.
- Inviare una richiesta all'API segnaposto JSON dalla riga di comando e tornare al processo proxy per visualizzare l'output.
In PowerShell usare il Invoke-WebRequest
cmdlet per inviare una richiesta GET all'API segnaposto JSON.
Invoke-WebRequest -Uri https://jsonplaceholder.typicode.com/posts
Se si usa curl
, inviare una richiesta GET all'API segnaposto JSON usando il comando seguente.
curl -ikx http://localhost:8000 https://jsonplaceholder.typicode.com/posts
È anche possibile usare un client API come Postman per inviare una richiesta GET a https://jsonplaceholder.typicode.com/posts
.
Viene visualizzata una voce con alcune informazioni di base sulla richiesta in ingresso e sull'azione eseguita da Dev Proxy. Dev Proxy simula una risposta di errore con una probabilità del 50%. Se la richiesta non restituisce un errore, Dev Proxy lo passa attraverso.
req ╭ GET https://jsonplaceholder.typicode.com/posts
api ╰ Passed through
- Ripetere l'invio di richieste all'API segnaposto JSON dalla riga di comando fino a quando non viene restituita una risposta di errore.
req ╭ GET https://jsonplaceholder.typicode.com/posts
api ╰ Passed through
req ╭ GET https://jsonplaceholder.typicode.com/posts
oops ╰ 403 Forbidden
Quando Dev Proxy restituisce una risposta di errore, viene visualizzata un'etichetta chaos
nella voce.
- Provare a inviare richieste ad altri endpoint disponibili nell'API segnaposto JSON
https://jsonplaceholder.typicode.com/posts
https://jsonplaceholder.typicode.com/posts/1
https://jsonplaceholder.typicode.com/posts/1/comments
https://jsonplaceholder.typicode.com/comments?postId=1
Arrestare il proxy di sviluppo in modo sicuro
Quando non è più necessario che Dev Proxy sia in esecuzione, è consigliabile arrestarlo sempre in modo sicuro.
- Premere CTRL + C per arrestare in modo sicuro Il proxy di sviluppo.
Se si arresta la sessione del prompt dei comandi, Dev Proxy non annulla correttamente la registrazione come proxy di sistema e potrebbero verificarsi alcuni problemi comuni.
Aggiornare gli URL da controllare
Per impostazione predefinita, Dev Proxy è configurato per intercettare qualsiasi richiesta effettuata all'API segnaposto JSON. È possibile configurare Dev Proxy per intercettare le richieste a qualsiasi API HTTP.
- Aprire il file di configurazione del proxy di sviluppo eseguendo nella riga di comando:
devproxy config
. - Individuare la
urlsToWatch
matrice.
"urlsToWatch": [
"https://jsonplaceholder.typicode.com/*"
],
La urlsToWatch
matrice rappresenta gli URL noti. Dev Proxy controlla le richieste dalla voce corrente a qualsiasi endpoint. La voce usa un asterisco dopo l'URL come carattere jolly. L'aggiunta di altre voci in questa matrice espande gli URL per i quali Dev Proxy cerca.
Si consideri che non si vuole che Dev Proxy intercetta le richieste effettuate a un endpoint specifico.
- Aggiungere una nuova voce alla
urlsToWatch
matrice.
"urlsToWatch": [
"!https://jsonplaceholder.typicode.com/posts/2",
"https://jsonplaceholder.typicode.com/*"
],
Il punto esclamativo all'inizio dell'URL indica a Dev Proxy di ignorare tutte le richieste corrispondenti a tale URL. È possibile combinare e associare punti esclamativi e asterischi in un URL.
- Nella riga di comando immettere
devproxy
e premere INVIO per avviare Dev Proxy. - Inviare una richiesta a
https://jsonplaceholder.typicode.com/posts/2
dalla riga di comando e visualizzare l'output.
Quando un URL ignorato corrisponde a una richiesta, Dev Proxy non elabora la richiesta e quindi non viene visualizzato alcun output.
L'ordine in cui gli URL sono elencati nella urlsToWatch
matrice è importante. Dev Proxy elabora questi URL in ordine. Quando un URL corrisponde, non viene elaborato di nuovo. Pertanto, l'inserimento dell'URL garantisce che la richiesta venga ignorata prima dell'elaborazione dell'URL successivo.
Percentuale di errori di modifica
Per impostazione predefinita, Dev Proxy è configurato in modo da non riuscire le richieste con una probabilità del 50% agli URL che vengono guardati. È possibile aumentare o ridurre la probabilità che una richiesta restituisca una risposta di errore.
Si aggiornerà ora la frequenza degli errori in modo che ogni richiesta all'API segnaposto JSON restituisca una risposta di errore.
- Aprire il file di configurazione del proxy di sviluppo eseguendo nella riga di comando:
devproxy config
. - Individuare la proprietà
rate
e aggiornare il valore da50
a100
.
Il devproxyrc.json
file contiene le impostazioni di configurazione usate all'avvio di Dev Proxy. Quando si modificano le impostazioni di configurazione, è sempre necessario arrestare e avviare Dev Proxy per rendere persistenti le modifiche.
- Nella riga di comando immettere
devproxy
e premere INVIO per avviare Dev Proxy. - Inviare una richiesta all'API segnaposto JSON dalla riga di comando e visualizzare l'output.
In alternativa, è possibile eseguire l'override delle impostazioni di configurazione in fase di esecuzione usando l'opzione all'avvio --failure-rate
di Dev Proxy.
devproxy --failure-rate 100
- Premere CTRL + C per arrestare in modo sicuro Il proxy di sviluppo.
Simulare la limitazione
Per impostazione predefinita, Dev Proxy restituisce un intervallo di risposte generice di errore 400 e 500. È possibile personalizzare queste risposte agli errori in base alle proprie esigenze.
Dev Proxy usa plug-in per abilitare comportamenti api diversi, per impostazione predefinita, vengono abilitati due plug-in.
- Il plug-in GenericRandomErrorPlugin consente a Dev Proxy di rispondere con una risposta di errore.
- Il plug-in RetryAfterPlugin consente a Dev Proxy di inserire un valore dinamico nell'intestazione Retry-After nella risposta di errore.
Modificare la configurazione in modo che Dev Proxy restituisca sempre una 429 Too Many requests
risposta di errore per simulare la limitazione.
Individuare prima di tutto il percorso del file che contiene le definizioni di errore.
- Aprire il file di configurazione del proxy di sviluppo eseguendo nella riga di comando:
devproxy config
. plugins
Nella matrice individuare la voce per il plug-in GenericRandomErrorPlugin. Si noti il valore dellaconfigSection
proprietà .- Più in basso nel file individuare l'oggetto
genericRandomErrorPlugin
. Si noti il valore dellaerrorsFile
proprietà .
Suggerimento
Il percorso del file degli errori viene visualizzato anche nell'output quando si avvia Dev Proxy.
- Nella cartella di installazione di Dev Proxy aprire
devproxy-errors.json
in un editor di testo. - Rimuovere tutte le voci di risposta nella
responses
matrice, ad eccezione della429
risposta.
{
"$schema": "https://raw.githubusercontent.com/microsoft/dev-proxy/main/schemas/v0.20.0/genericrandomerrorplugin.schema.json",
"errors": [
{
"request": {
"url": "https://jsonplaceholder.typicode.com/*"
},
"responses": [
{
"statusCode": 429,
"body": {
"message": "Too Many Requests",
"details": "The user has sent too many requests in a given amount of time (\"rate limiting\")."
},
"headers": {
"Retry-After": "@dynamic"
}
}
]
}
]
}
- Nella riga di comando immettere
devproxy
e premere INVIO per avviare Dev Proxy. - Inviare una richiesta all'API segnaposto JSON dalla riga di comando e visualizzare l'output.
req ╭ GET https://jsonplaceholder.typicode.com/posts
oops ╰ 429 TooManyRequests
- Premere CTRL + C per arrestare in modo sicuro Il proxy di sviluppo.
Passaggio successivo
Informazioni su come usare Dev Proxy per simulare errori casuali per la propria applicazione.