Sdílet prostřednictvím


Začínáme s Dev Proxy

Dev Proxy je nástroj příkazového řádku, který vám pomůže simulovat chování a chyby cloudových rozhraní API, které vám pomůžou vytvářet odolné aplikace.

V tomto kurzu se dozvíte, jak nainstalovat, spustit a nakonfigurovat Dev Proxy.

Pokud narazíte na nějaké potíže, neváhejte nás kontaktovat vytvořením nového problému a jsme rádi, že vám pomůžeme.

Instalace dev proxy serveru

Nejjednodušší způsob instalace Dev Proxy je použití sady winget. Případně můžete dev Proxy nainstalovat ručně.

Pokud chcete nainstalovat Dev Proxy pomocí wingetu, spusťte následující příkaz:

winget install Microsoft.DevProxy --silent

Důležité

Instalační program dev Proxy přidá novou položku do path. Pokud chcete po instalaci používat Dev Proxy, musíte restartovat příkazový řádek, aby se zajistilo, že se proměnné prostředí PATH aktualizovaly.

Poznámka:

Pokud chcete vyzkoušet nejnovější funkce preview, nainstalujte beta verzi Dev Proxy.

Pokud chcete nainstalovat Dev Proxy pomocí wingetu, spusťte následující příkaz:

winget install Microsoft.DevProxy.Beta --silent

Spuštění beta verze dev proxy serveru devproxy-beta

Nejjednodušší způsob instalace Dev Proxy je použití Homebrew. Případně můžete dev Proxy nainstalovat ručně.

Pokud chcete nainstalovat Dev Proxy pomocí Homebrew, spusťte následující příkazy:

brew tap microsoft/dev-proxy
brew install dev-proxy

Poznámka:

Pokud chcete vyzkoušet nejnovější funkce preview, nainstalujte beta verzi Dev Proxy.

Pokud chcete nainstalovat Dev Proxy pomocí Homebrew, spusťte následující příkazy:

brew tap microsoft/dev-proxy
brew install dev-proxy-beta

Spuštění beta verze dev proxy serveru devproxy-beta

Nejjednodušší způsob instalace Dev Proxy je použití instalačního skriptu. Případně můžete dev Proxy nainstalovat ručně.

Pokud chcete nainstalovat Dev Proxy pomocí instalačního skriptu, spusťte následující příkazy:

bash -c "$(curl -sL https://aka.ms/devproxy/setup.sh)"

Pokud používáte PowerShell, spusťte následující příkaz:

(Invoke-WebRequest https://aka.ms/devproxy/setup.ps1).Content | Invoke-Expression

Poznámka:

Pokud chcete vyzkoušet nejnovější funkce preview, nainstalujte beta verzi Dev Proxy.

Pokud chcete nainstalovat Dev Proxy pomocí instalačního skriptu, spusťte následující příkazy:

bash -c "$(curl -sL https://aka.ms/devproxy/setup-beta.sh)"

Pokud používáte PowerShell, spusťte následující příkaz:

(Invoke-WebRequest https://aka.ms/devproxy/setup-beta.ps1).Content | Invoke-Expression

Spuštění beta verze dev proxy serveru devproxy-beta

První spuštění dev proxy serveru

Při prvním spuštění dev proxy serveru na počítači je několik kroků, které je potřeba provést, abyste zajistili, že dev proxy server dokáže zachycovat požadavky z počítače a úspěšně reagovat. Po prvním spuštění nebudete muset tyto kroky opakovat.

  1. Spusťte dev proxy server. Otevřete relaci příkazového řádku. Enter devproxy a stiskněte Enter.
  2. Důvěřovat certifikátu. Dev Proxy nainstaluje certifikát s názvem Dev Proxy CA. Zobrazí se upozornění. Výběrem Yes potvrďte, že chcete certifikát nainstalovat. Dev Proxy používá tento certifikát k dešifrování provozu HTTPS odeslaného z vašeho počítače.
  3. Povolit přístup k bráně firewall. Brána Windows Firewall blokuje proxy server. Zobrazí se upozornění. Výběrem Allow access tlačítka povolíte provoz přes bránu firewall.
  1. Spusťte dev proxy server. Otevřete relaci příkazového řádku. Enter devproxy a stiskněte Enter.
  2. Důvěřovat certifikátu. Dev Proxy nainstaluje certifikát s názvem Dev Proxy CA, který používá k dešifrování provozu HTTPS odeslaného z vašeho počítače. Zobrazí se upozornění. Stisknutím klávesy y potvrďte, že chcete certifikátu důvěřovat.
  3. Přijměte příchozí připojení. Zobrazí se upozornění. Potvrďte výběr Allow .
  1. Spusťte dev proxy server. Otevřete relaci příkazového řádku. Enter devproxy a stiskněte Enter.

  2. Důvěřovat certifikátu. Dev Proxy používá vlastní certifikát SSL k dešifrování provozu HTTPS odesílaných z vašeho počítače.

    Důležité

    Následující pokyny jsou určené pro Ubuntu. U jiných linuxových distribucí se kroky můžou lišit.

    Pokud chcete certifikát nainstalovat a důvěřovat mu, spusťte na novém příkazovém řádku následující příkazy:

    # 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
    

Příkazový řádek zobrazí následující výstup:

 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

Ve výchozím nastavení je dev proxy nakonfigurovaný na:

  • Zachytávání požadavků provedených do libovolného koncového bodu rozhraní API zástupného symbolu JSON
  • Simulace chybových odpovědí rozhraní API a omezování rozhraní API s mírou selhání 50 %

Zachytávání požadavků

Dev Proxy bude zachycovat požadavky na známé adresy URL z libovolné aplikace na vašem počítači. Když se zjistí požadavek, vývojový proxy požadavek předá do rozhraní API (neprovedou žádnou akci) nebo vrátí odpověď.

  • Odešlete požadavek do zástupného rozhraní API JSON z příkazového řádku a přepněte zpět na proces proxy serveru, abyste zobrazili výstup.

V PowerShellu použijte rutinu Invoke-WebRequest k odeslání požadavku GET do zástupného rozhraní API JSON.

Invoke-WebRequest -Uri https://jsonplaceholder.typicode.com/posts

Pokud použijete curl, odešlete požadavek GET do zástupného rozhraní API JSON pomocí následujícího příkazu.

curl -ikx http://localhost:8000 https://jsonplaceholder.typicode.com/posts

K odeslání požadavku https://jsonplaceholder.typicode.com/postsGET můžete použít také klienta rozhraní API, jako je Postman.

Zobrazí se položka s některými základními informacemi o příchozím požadavku a akcí, kterou provedl vývojový proxy server. Dev Proxy simuluje chybovou odpověď s 50% pravděpodobností. Pokud váš požadavek nevrátí chybu, dev proxy ji předá.

 req   ╭ GET https://jsonplaceholder.typicode.com/posts
 api   ╰ Passed through
  • Opakujte odesílání požadavků na zástupné rozhraní API JSON z příkazového řádku, dokud se nevrátí chybová odpověď.
 req   ╭ GET https://jsonplaceholder.typicode.com/posts
 api   ╰ Passed through

 req   ╭ GET https://jsonplaceholder.typicode.com/posts
 oops  ╰ 403 Forbidden

Když dev proxy server vrátí chybovou odpověď, chaos v položce se zobrazí popisek.

  • Zkuste odesílat požadavky na jiné koncové body dostupné v zástupném rozhraní API 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

Bezpečné zastavení dev proxy serveru

Pokud už nepotřebujete, aby byl vývoj proxy spuštěný, měli byste ho vždy bezpečně zastavit.

  • Stisknutím kláves Ctrl + C bezpečně zastavíte dev proxy server.

Pokud relaci příkazového řádku vypnete, Dev Proxy se neregistruje správně jako systémový proxy server a může docházet k některým běžným problémům.

Aktualizace adres URL pro sledování

Ve výchozím nastavení je dev proxy nakonfigurovaný tak, aby zachycoval všechny požadavky vytvořené do zástupného rozhraní API JSON. Dev Proxy můžete nakonfigurovat tak, aby zachycuje požadavky na libovolné rozhraní HTTP API.

  • Otevřete konfigurační soubor dev proxy spuštěním v příkazovém řádku: devproxy config.
  • urlsToWatch Vyhledejte pole.
"urlsToWatch": [
  "https://jsonplaceholder.typicode.com/*"
],

Pole urlsToWatch představuje známé adresy URL. Dev Proxy sleduje požadavky z aktuální položky do libovolného koncového bodu. Položka používá hvězdičku za adresou URL jako zástupný znak. Přidáním dalších položek do tohoto pole se rozšíří adresy URL, na které dev proxy server sleduje.

Předpokládejme, že nechcete, aby dev Proxy zachycoval požadavky provedené v určitém koncovém bodu.

  • Přidejte do urlsToWatch pole novou položku.
"urlsToWatch": [
  "!https://jsonplaceholder.typicode.com/posts/2",
  "https://jsonplaceholder.typicode.com/*"
],

Vykřičník na začátku adresy URL říká dev proxy serveru, aby ignoroval všechny požadavky, které odpovídají této adrese URL. V adrese URL můžete kombinovat a rozlišovat vykřičníky a hvězdičky.

  • Na příkazovém řádku zadejte devproxy a stisknutím klávesy Enter spusťte Dev Proxy.
  • Odešlete požadavek https://jsonplaceholder.typicode.com/posts/2 z příkazového řádku a zobrazte výstup.

Když se ignorovaná adresa URL shoduje s požadavkem, Dev Proxy požadavek nezpracuje, takže se nezobrazí žádný výstup.

Pořadí, ve kterém jsou adresy URL uvedené v urlsToWatch poli, je důležité. Dev Proxy zpracovává tyto adresy URL v pořadí. Když se adresa URL shoduje, nezpracuje se znovu. Proto umístěním adresy URL nejprve zajistíte, aby se požadavek před zpracováním další adresy URL ignoroval.

Změna četnosti selhání

Ve výchozím nastavení je Dev Proxy nakonfigurovaný tak, aby selhávají požadavky s 50% šancí na adresy URL, které se sledují. Můžete zvýšit nebo snížit pravděpodobnost, že požadavek vrátí chybovou odpověď.

Pojďme aktualizovat míru selhání tak, aby každý požadavek na zástupné rozhraní API JSON vrátil chybovou odpověď.

  • Otevřete konfigurační soubor dev proxy spuštěním v příkazovém řádku: devproxy config.
  • rate Vyhledejte vlastnost a aktualizujte hodnotu z 50 na 100.

Soubor devproxyrc.json obsahuje konfigurační nastavení, která se použijí při spuštění dev proxy serveru. Při změně nastavení konfigurace byste měli vždy zastavit a spustit Dev Proxy, aby se změny zachovaly.

  • Na příkazovém řádku zadejte devproxy a stisknutím klávesy Enter spusťte Dev Proxy.
  • Odešlete požadavek do zástupného rozhraní API JSON z příkazového řádku a zobrazte výstup.

Případně můžete přepsat nastavení konfigurace za běhu pomocí --failure-rate možnosti při spuštění dev proxy serveru.

devproxy --failure-rate 100
  • Stisknutím kláves Ctrl + C bezpečně zastavíte dev proxy server.

Simulace omezování

Dev Proxy ve výchozím nastavení vrací rozsah obecných chyb 400 a 500 chybových odpovědí. Tyto chybové odpovědi můžete přizpůsobit vašim potřebám.

Dev Proxy používá moduly plug-in k povolení různých chování rozhraní API ve výchozím nastavení dva moduly plug-in.

Pojďme změnit konfiguraci tak, aby dev proxy vždy vrátil chybovou 429 Too Many requests odpověď pro simulaci omezování.

Nejprve vyhledejme umístění souboru, který obsahuje definice chyb.

  • Otevřete konfigurační soubor dev proxy spuštěním v příkazovém řádku: devproxy config.
  • plugins V poli vyhledejte položku modulu plug-in GenericRandomErrorPlugin. Poznamenejte si hodnotu configSection vlastnosti.
  • Dále v souboru vyhledejte genericRandomErrorPlugin objekt. Poznamenejte si hodnotu errorsFile vlastnosti.

Tip

Umístění souboru chyb se také zobrazí ve výstupu při spuštění dev proxy serveru.

  • V instalační složce Dev Proxy otevřete devproxy-errors.json v textovém editoru.
  • Odeberte všechny položky odpovědi v responses poli s výjimkou 429 odpovědi.
{
  "$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"
          }
        }
      ]
    }
  ]
}
  • Na příkazovém řádku zadejte devproxy a stisknutím klávesy Enter spusťte Dev Proxy.
  • Odešlete požadavek do zástupného rozhraní API JSON z příkazového řádku a zobrazte výstup.
 req   ╭ GET https://jsonplaceholder.typicode.com/posts
 oops  ╰ 429 TooManyRequests
  • Stisknutím kláves Ctrl + C bezpečně zastavíte dev proxy server.

Další krok

Naučte se používat Dev Proxy k simulaci náhodných chyb pro vaši vlastní aplikaci.