Testování webových rozhraní API pomocí HttpRepl

HTTP Read-Eval-Print Loop (REPL) je:

  • Jednoduchý nástroj příkazového řádku pro různé platformy, který je podporovaný všude, kde se podporuje .NET Core.
  • Slouží k provádění požadavků HTTP na testování webových rozhraní API ASP.NET Core (i webových rozhraní API jiných než ASP.NET Core) a zobrazování jejich výsledků.
  • Umožňuje testování webových rozhraní API hostovaných v jakémkoli prostředí, včetně místního hostitele a Azure App Service.

Podporují se následující příkazy HTTP:

Pokud si to chcete vyzkoušet, prohlédněte si nebo stáhněte ukázkové webové rozhraní API ASP.NET Core (postup stažení).

Požadavky

Instalace

Nástroj HttpRepl nainstalujete spuštěním tohoto příkazu:

dotnet tool install -g Microsoft.dotnet-httprepl

Globální nástroj .NET Core se instaluje z balíčku NuGet Microsoft.dotnet-httprepl.

Poznámka:

Ve výchozím nastavení architektura binárních souborů .NET, které se mají nainstalovat, představuje aktuálně spuštěnou architekturu operačního systému. Pokud chcete zadat jinou architekturu operačního systému, přečtěte si téma instalace nástroje dotnet, možnost --arch. Další informace najdete v tématu o problému GitHubu dotnet/AspNetCore.Docs #29262.

V macOS aktualizujte cestu:

export PATH="$HOME/.dotnet/tools:$PATH"

Využití

Po dokončení úspěšné instalace nástroje HttpRepl spusťte následující příkaz, který ho spustí:

httprepl

Pokud chcete zobrazit dostupné příkazy HttpRepl, spusťte jeden z následujících příkazů:

httprepl -h
httprepl --help

Zobrazí se následující výstup:

Usage:
  httprepl [<BASE_ADDRESS>] [options]

Arguments:
  <BASE_ADDRESS> - The initial base address for the REPL.

Options:
  -h|--help - Show help information.

Once the REPL starts, these commands are valid:

Setup Commands:
Use these commands to configure the tool for your API server

connect        Configures the directory structure and base address of the api server
set header     Sets or clears a header for all requests. e.g. `set header content-type application/json`

HTTP Commands:
Use these commands to execute requests against your application.

GET            get - Issues a GET request
POST           post - Issues a POST request
PUT            put - Issues a PUT request
DELETE         delete - Issues a DELETE request
PATCH          patch - Issues a PATCH request
HEAD           head - Issues a HEAD request
OPTIONS        options - Issues a OPTIONS request

Navigation Commands:
The REPL allows you to navigate your URL space and focus on specific APIs that you are working on.

ls             Show all endpoints for the current path
cd             Append the given directory to the currently selected path, or move up a path when using `cd ..`

Shell Commands:
Use these commands to interact with the REPL shell.

clear          Removes all text from the shell
echo [on/off]  Turns request echoing on or off, show the request that was made when using request commands
exit           Exit the shell

REPL Customization Commands:
Use these commands to customize the REPL behavior.

pref [get/set] Allows viewing or changing preferences, e.g. 'pref set editor.command.default 'C:\\Program Files\\Microsoft VS Code\\Code.exe'`
run            Runs the script at the given path. A script is a set of commands that can be typed with one command per line
ui             Displays the Swagger UI page, if available, in the default browser

Use `help <COMMAND>` for more detail on an individual command. e.g. `help get`.
For detailed tool info, see https://aka.ms/http-repl-doc.

HttpRepl nabízí dokončování příkazů. Stisknutím klávesy Tab se postupně prochází seznamem příkazů, které doplňují zadané znaky nebo koncové body API. Následující části popisují dostupné příkazy rozhraní příkazového řádku.

Připojení k webovému rozhraní API

K webovému rozhraní API se můžete připojit spuštěním následujícího příkazu:

httprepl <ROOT URI>

<ROOT URI> je základní identifikátor URI webového rozhraní API. Příklad:

httprepl https://localhost:5001

Případně spusťte následující příkaz kdykoli, když běží HttpRepl:

connect <ROOT URI>

Příklad:

(Disconnected)> connect https://localhost:5001

Ruční nasměrování na popis OpenAPI pro webové rozhraní API

Výše uvedený příkaz connect se pokusí automaticky najít popis OpenAPI. Pokud to z nějakého důvodu nejde udělat, můžete pomocí možnosti --openapi zadat identifikátor URI popisu OpenAPI webového rozhraní API:

connect <ROOT URI> --openapi <OPENAPI DESCRIPTION ADDRESS>

Příklad:

(Disconnected)> connect https://localhost:5001 --openapi /swagger/v1/swagger.json

Povolení podrobného výstupu pro podrobnosti o prohledávání, parsování a ověřování popisu OpenAPI

Zadáním --verbose možnosti v connect příkazu zobrazíte další podrobnosti, když nástroj vyhledává popis OpenAPI, parsuje ho a ověřuje ho.

connect <ROOT URI> --verbose

Příklad:

(Disconnected)> connect https://localhost:5001 --verbose
Checking https://localhost:5001/swagger.json... 404 NotFound
Checking https://localhost:5001/swagger/v1/swagger.json... 404 NotFound
Checking https://localhost:5001/openapi.json... Found
Parsing... Successful (with warnings)
The field 'info' in 'document' object is REQUIRED [#/info]
The field 'paths' in 'document' object is REQUIRED [#/paths]

Zobrazení dostupných koncových bodů

Pokud chcete zobrazit seznam různých koncových bodů (kontrolerů) na aktuální cestě adresy webového rozhraní API, spusťte příkaz ls nebo dir:

https://localhost:5001/> ls

Zobrazí se následující výstupní formát:

.        []
Fruits   [get|post]
People   [get|post]

https://localhost:5001/>

Předchozí výstup indikuje, že jsou k dispozici dva kontrolery: Fruits a People. Oba kontrolery podporují bezparametrové operace HTTP GET a POST.

Přechod na konkrétní kontroler odhalí podrobnější informace. Například výstup následujícího příkazu ukazuje, že kontroler Fruits podporuje také operace HTTP GET, PUT a DELETE. Každá z těchto operací očekává v trase parametr id:

https://localhost:5001/fruits> ls
.      [get|post]
..     []
{id}   [get|put|delete]

https://localhost:5001/fruits>

Případně spuštěním příkazu ui otevřete stránku uživatelského rozhraní Swaggeru pro webové rozhraní API v prohlížeči. Příklad:

https://localhost:5001/> ui

Pokud chcete přejít na jiný koncový bod webového rozhraní API, spusťte příkaz cd:

https://localhost:5001/> cd people

V cestě za příkazem cd se nerozlišují malá a velká písmena. Zobrazí se následující výstupní formát:

/people    [get|post]

https://localhost:5001/people>

Přizpůsobení nástroje HttpRepl

Je možné přizpůsobit výchozí barvy nástroje HttpRepl. Kromě toho je možné definovat výchozí textový editor. Předvolby HttpRepl se uchovávají v aktuální relaci a respektují se i v budoucích relacích. Předvolby jsou po úpravě uložené v následujícím souboru:

%HOME%/.httpreplprefs

Soubor .httpreplprefs se načítá při spuštění a za běhu se u něj nesledují změny. Ruční úpravy tohoto souboru se projeví až po restartování nástroje.

Zobrazení nastavení

Pokud chcete zobrazit dostupná nastavení, spusťte příkaz pref get. Příklad:

https://localhost:5001/> pref get

Předchozí příkaz zobrazí dostupné páry klíč-hodnota:

colors.json=Green
colors.json.arrayBrace=BoldCyan
colors.json.comma=BoldYellow
colors.json.name=BoldMagenta
colors.json.nameSeparator=BoldWhite
colors.json.objectBrace=Cyan
colors.protocol=BoldGreen
colors.status=BoldYellow

Nastavení předvoleb barev

Barevné zvýrazňování odpovědí se v současné době podporuje jenom pro JSON. Pokud chcete přizpůsobit výchozí barvy nástroje HttpRepl, vyhledejte klíč odpovídající barvě, která se má změnit. Pokyny k vyhledání těchto klíčů najdete v části Zobrazení nastavení. Například hodnotu klíče colors.json změníte z Green na White následujícím způsobem:

https://localhost:5001/people> pref set colors.json White

Je možné použít jenom povolené barvy. Následné požadavky HTTP zobrazí výstup s novým obarvením.

Pokud nejsou nastaveny konkrétní barevné klíče, zvažují se obecnější klíče. Pokud chcete předvést toto záložní chování, představte si následující příklad:

  • Pokud colors.json.name nemá hodnotu, použije se colors.json.string.
  • Pokud colors.json.string nemá hodnotu, použije se colors.json.literal.
  • Pokud colors.json.literal nemá hodnotu, použije se colors.json.
  • Pokud colors.json nemá hodnotu, použije se výchozí barva textu příkazového prostředí (AllowedColors.None).

Nastavení velikosti odsazení

Přizpůsobení velikosti odsazení odpovědi se v současné době podporuje jenom pro JSON. Výchozí velikost je dvě mezery. Příklad:

[
  {
    "id": 1,
    "name": "Apple"
  },
  {
    "id": 2,
    "name": "Orange"
  },
  {
    "id": 3,
    "name": "Strawberry"
  }
]

Pokud chcete změnit výchozí velikost, nastavte klíč formatting.json.indentSize. Pokud například chcete vždy používat čtyři mezery:

pref set formatting.json.indentSize 4

Následné odpovědi respektují nastavení čtyř mezer:

[
    {
        "id": 1,
        "name": "Apple"
    },
    {
        "id": 2,
        "name": "Orange"
    },
    {
        "id": 3,
        "name": "Strawberry"
    }
]

Nastavení výchozího textového editoru

Ve výchozím nastavení nemá nástroj HttpRepl nakonfigurovaný žádný textový editor. Pokud chcete otestovat metody webového rozhraní API vyžadující text požadavku HTTP, musí být nastavený výchozí textový editor. Nástroj HttpRepl spustí nakonfigurovaný textový editor výhradně pro účely sestavení textu požadavku. Spuštěním následujícího příkazu nastavíte preferovaný textový editor jako výchozí:

pref set editor.command.default "<EXECUTABLE>"

<EXECUTABLE> v předchozím příkazu je úplná cesta ke spustitelnému souboru textového editoru. Pokud chcete například jako výchozí textový editor nastavit Visual Studio Code, spusťte následující příkaz:

pref set editor.command.default "/usr/bin/code"

Pokud chcete spustit výchozí textový editor s konkrétními argumenty rozhraní příkazového řádku, nastavte klíč editor.command.default.arguments. Předpokládejme například, že Visual Studio Code je výchozí textový editor a že chcete, aby nástroj HttpRepl otevřel Visual Studio Code v nové relaci se zakázanými rozšířeními. Spusťte následující příkaz:

pref set editor.command.default.arguments "--disable-extensions --new-window"

Tip

Pokud je výchozím editorem Visual Studio Code, budete obvykle chtít předat argument -w nebo --wait, který vynutí, aby editor Visual Studio Code před vrácením soubor zavřel.

Nastavení cest pro hledání popisů OpenAPI

Ve výchozím nastavení má HttpRepl sadu relativních cest, které používá k vyhledání popisu OpenAPI při provádění příkazu connect bez možnosti --openapi. Tyto relativní cesty se kombinují s kořenovými a základními cestami zadanými v příkazu connect. Výchozí relativní cesty jsou:

  • swagger.json
  • swagger/v1/swagger.json
  • /swagger.json
  • /swagger/v1/swagger.json
  • openapi.json
  • /openapi.json

Pokud chcete ve svém prostředí použít jinou sadu cest pro hledání, nastavte předvolbu swagger.searchPaths. Hodnotou musí být seznam relativních cest oddělených svislou čárou. Příklad:

pref set swagger.searchPaths "swagger/v2/swagger.json|swagger/v3/swagger.json"

Namísto úplného nahrazení výchozího seznamu je možné tento seznam také upravit přidáním nebo odebráním cest.

Pokud chcete do výchozího seznamu přidat jednu nebo více cest pro hledání, nastavte předvolbu swagger.addToSearchPaths. Hodnotou musí být seznam relativních cest oddělených svislou čárou. Příklad:

pref set swagger.addToSearchPaths "openapi/v2/openapi.json|openapi/v3/openapi.json"

Pokud chcete z výchozího seznamu odebrat jednu nebo více cest pro hledání, nastavte předvolbu swagger.addToSearchPaths. Hodnotou musí být seznam relativních cest oddělených svislou čárou. Příklad:

pref set swagger.removeFromSearchPaths "swagger.json|/swagger.json"

Testování požadavků HTTP GET

Synopse

get <PARAMETER> [-F|--no-formatting] [-h|--header] [--response:body] [--response:headers] [-s|--streaming]

Argumenty

PARAMETER

Parametr trasy, pokud existuje, očekávaný metodou akce přidruženého kontroleru.

Možnosti

Pro příkaz get jsou k dispozici následující možnosti:

  • -F|--no-formatting

    Příznak, jehož přítomnost potlačí formátování odpovědi HTTP.

  • -h|--header

    Nastavuje hlavičku požadavku HTTP. Podporují se následující dva formáty hodnot:

    • {header}={value}
    • {header}:{value}
  • --response:body

    Určuje soubor, do kterého se má zapsat text odpovědi HTTP. Například --response:body "C:\response.json". Pokud soubor neexistuje, je vytvořen.

  • --response:headers

    Určuje soubor, do kterého se mají zapsat hlavičky odpovědi HTTP. Například --response:headers "C:\response.txt". Pokud soubor neexistuje, je vytvořen.

  • -s|--streaming

    Příznak, jehož přítomnost umožňuje streamování odpovědi HTTP.

Příklad

Vydání požadavku HTTP GET:

  1. Spusťte příkaz get v koncovém bodu, který ho podporuje:

    https://localhost:5001/people> get
    

    Předchozí příkaz zobrazí následující výstupní formát:

    HTTP/1.1 200 OK
    Content-Type: application/json; charset=utf-8
    Date: Fri, 21 Jun 2019 03:38:45 GMT
    Server: Kestrel
    Transfer-Encoding: chunked
    
    [
      {
        "id": 1,
        "name": "Scott Hunter"
      },
      {
        "id": 2,
        "name": "Scott Hanselman"
      },
      {
        "id": 3,
        "name": "Scott Guthrie"
      }
    ]
    
    
    https://localhost:5001/people>
    
  2. Načtěte konkrétní záznam předáním parametru do příkazu get:

    https://localhost:5001/people> get 2
    

    Předchozí příkaz zobrazí následující výstupní formát:

    HTTP/1.1 200 OK
    Content-Type: application/json; charset=utf-8
    Date: Fri, 21 Jun 2019 06:17:57 GMT
    Server: Kestrel
    Transfer-Encoding: chunked
    
    [
      {
        "id": 2,
        "name": "Scott Hanselman"
      }
    ]
    
    
    https://localhost:5001/people>
    

Testování požadavků HTTP POST

Synopse

post <PARAMETER> [-c|--content] [-f|--file] [-h|--header] [--no-body] [-F|--no-formatting] [--response] [--response:body] [--response:headers] [-s|--streaming]

Argumenty

PARAMETER

Parametr trasy, pokud existuje, očekávaný metodou akce přidruženého kontroleru.

Možnosti

  • -F|--no-formatting

    Příznak, jehož přítomnost potlačí formátování odpovědi HTTP.

  • -h|--header

    Nastavuje hlavičku požadavku HTTP. Podporují se následující dva formáty hodnot:

    • {header}={value}
    • {header}:{value}
  • --response:body

    Určuje soubor, do kterého se má zapsat text odpovědi HTTP. Například --response:body "C:\response.json". Pokud soubor neexistuje, je vytvořen.

  • --response:headers

    Určuje soubor, do kterého se mají zapsat hlavičky odpovědi HTTP. Například --response:headers "C:\response.txt". Pokud soubor neexistuje, je vytvořen.

  • -s|--streaming

    Příznak, jehož přítomnost umožňuje streamování odpovědi HTTP.

  • -c|--content

    Poskytuje vložený text požadavku HTTP. Například -c "{\"id\":2,\"name\":\"Cherry\"}".

  • -f|--file

    Poskytuje cestu k souboru obsahujícímu text požadavku HTTP. Například -f "C:\request.json".

  • --no-body

    Indikuje, že text požadavku HTTP není potřeba.

Příklad

Vydání požadavku HTTP POST:

  1. Spusťte příkaz post v koncovém bodu, který ho podporuje:

    https://localhost:5001/people> post -h Content-Type=application/json
    

    V předchozím příkazu je hlavička Content-Type požadavku HTTP nastavená tak, aby označí základní typ média požadavku JSON. Výchozí textový editor otevře soubor .tmp se šablonou JSON představující text požadavku HTTP. Příklad:

    {
      "id": 0,
      "name": ""
    }
    

    Tip

    Pokud chcete nastavit výchozí textový editor, přečtěte si část Nastavení výchozího textového editoru.

  2. Upravte šablonu JSON tak, aby splňovala požadavky na ověření modelu:

    {
      "id": 0,
      "name": "Scott Addie"
    }
    
  3. Uložte soubor .tmp a zavřete textový editor. V příkazovém prostředí se zobrazí následující výstup:

    HTTP/1.1 201 Created
    Content-Type: application/json; charset=utf-8
    Date: Thu, 27 Jun 2019 21:24:18 GMT
    Location: https://localhost:5001/people/4
    Server: Kestrel
    Transfer-Encoding: chunked
    
    {
      "id": 4,
      "name": "Scott Addie"
    }
    
    
    https://localhost:5001/people>
    

Testování požadavků HTTP PUT

Synopse

put <PARAMETER> [-c|--content] [-f|--file] [-h|--header] [--no-body] [-F|--no-formatting] [--response] [--response:body] [--response:headers] [-s|--streaming]

Argumenty

PARAMETER

Parametr trasy, pokud existuje, očekávaný metodou akce přidruženého kontroleru.

Možnosti

  • -F|--no-formatting

    Příznak, jehož přítomnost potlačí formátování odpovědi HTTP.

  • -h|--header

    Nastavuje hlavičku požadavku HTTP. Podporují se následující dva formáty hodnot:

    • {header}={value}
    • {header}:{value}
  • --response:body

    Určuje soubor, do kterého se má zapsat text odpovědi HTTP. Například --response:body "C:\response.json". Pokud soubor neexistuje, je vytvořen.

  • --response:headers

    Určuje soubor, do kterého se mají zapsat hlavičky odpovědi HTTP. Například --response:headers "C:\response.txt". Pokud soubor neexistuje, je vytvořen.

  • -s|--streaming

    Příznak, jehož přítomnost umožňuje streamování odpovědi HTTP.

  • -c|--content

    Poskytuje vložený text požadavku HTTP. Například -c "{\"id\":2,\"name\":\"Cherry\"}".

  • -f|--file

    Poskytuje cestu k souboru obsahujícímu text požadavku HTTP. Například -f "C:\request.json".

  • --no-body

    Indikuje, že text požadavku HTTP není potřeba.

Příklad

Vydání požadavku HTTP PUT:

  1. Volitelné: Spuštěním příkazu get si můžete zobrazit data před úpravou:

    https://localhost:5001/fruits> get
    HTTP/1.1 200 OK
    Content-Type: application/json; charset=utf-8
    Date: Sat, 22 Jun 2019 00:07:32 GMT
    Server: Kestrel
    Transfer-Encoding: chunked
    
    [
      {
        "id": 1,
        "data": "Apple"
      },
      {
        "id": 2,
        "data": "Orange"
      },
      {
        "id": 3,
        "data": "Strawberry"
      }
    ]
    
  2. Spusťte příkaz put v koncovém bodu, který ho podporuje:

    https://localhost:5001/fruits> put 2 -h Content-Type=application/json
    

    V předchozím příkazu je hlavička Content-Type požadavku HTTP nastavená tak, aby označí základní typ média požadavku JSON. Výchozí textový editor otevře soubor .tmp se šablonou JSON představující text požadavku HTTP. Příklad:

    {
      "id": 0,
      "name": ""
    }
    

    Tip

    Pokud chcete nastavit výchozí textový editor, přečtěte si část Nastavení výchozího textového editoru.

  3. Upravte šablonu JSON tak, aby splňovala požadavky na ověření modelu:

    {
      "id": 2,
      "name": "Cherry"
    }
    
  4. Uložte soubor .tmp a zavřete textový editor. V příkazovém prostředí se zobrazí následující výstup:

    [main 2019-06-28T17:27:01.805Z] update#setState idle
    HTTP/1.1 204 No Content
    Date: Fri, 28 Jun 2019 17:28:21 GMT
    Server: Kestrel
    
  5. Volitelné: Pokud chcete zobrazit změny, zadejte příkaz get. Pokud jste například v textovém editoru zadali text Cherry, get vrátí následující výstup:

    https://localhost:5001/fruits> get
    HTTP/1.1 200 OK
    Content-Type: application/json; charset=utf-8
    Date: Sat, 22 Jun 2019 00:08:20 GMT
    Server: Kestrel
    Transfer-Encoding: chunked
    
    [
      {
        "id": 1,
        "data": "Apple"
      },
      {
        "id": 2,
        "data": "Cherry"
      },
      {
        "id": 3,
        "data": "Strawberry"
      }
    ]
    
    
    https://localhost:5001/fruits>
    

Testování požadavků HTTP DELETE

Synopse

delete <PARAMETER> [-F|--no-formatting] [-h|--header] [--response] [--response:body] [--response:headers] [-s|--streaming]

Argumenty

PARAMETER

Parametr trasy, pokud existuje, očekávaný metodou akce přidruženého kontroleru.

Možnosti

  • -F|--no-formatting

    Příznak, jehož přítomnost potlačí formátování odpovědi HTTP.

  • -h|--header

    Nastavuje hlavičku požadavku HTTP. Podporují se následující dva formáty hodnot:

    • {header}={value}
    • {header}:{value}
  • --response:body

    Určuje soubor, do kterého se má zapsat text odpovědi HTTP. Například --response:body "C:\response.json". Pokud soubor neexistuje, je vytvořen.

  • --response:headers

    Určuje soubor, do kterého se mají zapsat hlavičky odpovědi HTTP. Například --response:headers "C:\response.txt". Pokud soubor neexistuje, je vytvořen.

  • -s|--streaming

    Příznak, jehož přítomnost umožňuje streamování odpovědi HTTP.

Příklad

Vydání požadavku HTTP DELETE:

  1. Volitelné: Spuštěním příkazu get si můžete zobrazit data před úpravou:

    https://localhost:5001/fruits> get
    HTTP/1.1 200 OK
    Content-Type: application/json; charset=utf-8
    Date: Sat, 22 Jun 2019 00:07:32 GMT
    Server: Kestrel
    Transfer-Encoding: chunked
    
    [
      {
        "id": 1,
        "data": "Apple"
      },
      {
        "id": 2,
        "data": "Orange"
      },
      {
        "id": 3,
        "data": "Strawberry"
      }
    ]
    
  2. Spusťte příkaz delete v koncovém bodu, který ho podporuje:

    https://localhost:5001/fruits> delete 2
    

    Předchozí příkaz zobrazí následující výstupní formát:

    HTTP/1.1 204 No Content
    Date: Fri, 28 Jun 2019 17:36:42 GMT
    Server: Kestrel
    
  3. Volitelné: Pokud chcete zobrazit změny, zadejte příkaz get. V tomto příkladu get vrátí následující výstup:

    https://localhost:5001/fruits> get
    HTTP/1.1 200 OK
    Content-Type: application/json; charset=utf-8
    Date: Sat, 22 Jun 2019 00:16:30 GMT
    Server: Kestrel
    Transfer-Encoding: chunked
    
    [
      {
        "id": 1,
        "data": "Apple"
      },
      {
        "id": 3,
        "data": "Strawberry"
      }
    ]
    
    
    https://localhost:5001/fruits>
    

Testování požadavků HTTP PATCH

Synopse

patch <PARAMETER> [-c|--content] [-f|--file] [-h|--header] [--no-body] [-F|--no-formatting] [--response] [--response:body] [--response:headers] [-s|--streaming]

Argumenty

PARAMETER

Parametr trasy, pokud existuje, očekávaný metodou akce přidruženého kontroleru.

Možnosti

  • -F|--no-formatting

    Příznak, jehož přítomnost potlačí formátování odpovědi HTTP.

  • -h|--header

    Nastavuje hlavičku požadavku HTTP. Podporují se následující dva formáty hodnot:

    • {header}={value}
    • {header}:{value}
  • --response:body

    Určuje soubor, do kterého se má zapsat text odpovědi HTTP. Například --response:body "C:\response.json". Pokud soubor neexistuje, je vytvořen.

  • --response:headers

    Určuje soubor, do kterého se mají zapsat hlavičky odpovědi HTTP. Například --response:headers "C:\response.txt". Pokud soubor neexistuje, je vytvořen.

  • -s|--streaming

    Příznak, jehož přítomnost umožňuje streamování odpovědi HTTP.

  • -c|--content

    Poskytuje vložený text požadavku HTTP. Například -c "{\"id\":2,\"name\":\"Cherry\"}".

  • -f|--file

    Poskytuje cestu k souboru obsahujícímu text požadavku HTTP. Například -f "C:\request.json".

  • --no-body

    Indikuje, že text požadavku HTTP není potřeba.

Testování požadavků HTTP HEAD

Synopse

head <PARAMETER> [-F|--no-formatting] [-h|--header] [--response] [--response:body] [--response:headers] [-s|--streaming]

Argumenty

PARAMETER

Parametr trasy, pokud existuje, očekávaný metodou akce přidruženého kontroleru.

Možnosti

  • -F|--no-formatting

    Příznak, jehož přítomnost potlačí formátování odpovědi HTTP.

  • -h|--header

    Nastavuje hlavičku požadavku HTTP. Podporují se následující dva formáty hodnot:

    • {header}={value}
    • {header}:{value}
  • --response:body

    Určuje soubor, do kterého se má zapsat text odpovědi HTTP. Například --response:body "C:\response.json". Pokud soubor neexistuje, je vytvořen.

  • --response:headers

    Určuje soubor, do kterého se mají zapsat hlavičky odpovědi HTTP. Například --response:headers "C:\response.txt". Pokud soubor neexistuje, je vytvořen.

  • -s|--streaming

    Příznak, jehož přítomnost umožňuje streamování odpovědi HTTP.

Testování požadavků HTTP OPTIONS

Synopse

options <PARAMETER> [-F|--no-formatting] [-h|--header] [--response] [--response:body] [--response:headers] [-s|--streaming]

Argumenty

PARAMETER

Parametr trasy, pokud existuje, očekávaný metodou akce přidruženého kontroleru.

Možnosti

  • -F|--no-formatting

    Příznak, jehož přítomnost potlačí formátování odpovědi HTTP.

  • -h|--header

    Nastavuje hlavičku požadavku HTTP. Podporují se následující dva formáty hodnot:

    • {header}={value}
    • {header}:{value}
  • --response:body

    Určuje soubor, do kterého se má zapsat text odpovědi HTTP. Například --response:body "C:\response.json". Pokud soubor neexistuje, je vytvořen.

  • --response:headers

    Určuje soubor, do kterého se mají zapsat hlavičky odpovědi HTTP. Například --response:headers "C:\response.txt". Pokud soubor neexistuje, je vytvořen.

  • -s|--streaming

    Příznak, jehož přítomnost umožňuje streamování odpovědi HTTP.

Nastavení hlaviček požadavků HTTP

Pokud chcete nastavit hlavičku požadavku HTTP, použijte jeden z následujících přístupů:

  • Nastavení v rámci řádku s požadavkem HTTP. Příklad:

    https://localhost:5001/people> post -h Content-Type=application/json
    

    U předchozího přístupu vyžaduje každá samostatná hlavička požadavku HTTP vlastní možnost -h.

  • Nastavení před odesláním požadavku HTTP. Příklad:

    https://localhost:5001/people> set header Content-Type application/json
    

    Při nastavování hlavičky před odesláním požadavku zůstane hlavička nastavená po dobu trvání relace příkazového prostředí. Pokud chcete hlavičku vymazat, zadejte prázdnou hodnotu. Příklad:

    https://localhost:5001/people> set header Content-Type
    

Testování zabezpečených koncových bodů

Nástroj HttpRepl podporuje testování zabezpečených koncových bodů následujícími způsoby:

  • Pomocí výchozích přihlašovacích údajů přihlášeného uživatele.
  • Prostřednictvím hlaviček požadavků HTTP.

Výchozí přihlašovací údaje

Představte si, že webové rozhraní API, které testujete, je hostované ve službě IIS a zabezpečené pomocí ověřování systému Windows. Chcete, aby se přihlašovací údaje uživatele, který nástroj spustil, přenášely na testované koncové body HTTP. Předání výchozích přihlašovacích údajů přihlášeného uživatele:

  1. Nastavte předvolbu httpClient.useDefaultCredentials na true:

    pref set httpClient.useDefaultCredentials true
    
  2. Ukončete a restartujte tento nástroj před odesláním dalšího požadavku do webového rozhraní API.

Výchozí přihlašovací údaje proxy serveru

Představte si scénář, ve kterém je webové rozhraní API, které testujete, za proxy serverem zabezpečeným pomocí ověřování systému Windows. Chcete, aby se přihlašovací údaje uživatele, který nástroj spustil, přenášely na proxy server. Předání výchozích přihlašovacích údajů přihlášeného uživatele:

  1. Nastavte předvolbu httpClient.proxy.useDefaultCredentials na true:

    pref set httpClient.proxy.useDefaultCredentials true
    
  2. Ukončete a restartujte tento nástroj před odesláním dalšího požadavku do webového rozhraní API.

Hlavičky požadavků HTTP

Mezi podporovaná schémata ověřování a autorizace patří:

  • základní ověřování
  • nosné tokeny JWT
  • ověřování algoritmem Digest

Do koncového bodu můžete například odeslat nosný token pomocí následujícího příkazu:

set header Authorization "bearer <TOKEN VALUE>"

Nosný token potřebujete, pokud chcete získat přístup ke koncovému bodu hostovanému v Azure nebo používat rozhraní Azure REST API. Pomocí následujících kroků můžete získat nosný token pro vaše předplatné Azure prostřednictvím Azure CLI. Nástroj HttpRepl nastaví nosný token v hlavičce požadavku HTTP. Načte se seznam služeb Azure App Service Web Apps.

  1. Přihlaste se do Azure:

    az login
    
  2. Získejte ID předplatného pomocí následujícího příkazu:

    az account show --query id
    
  3. Zkopírujte ID předplatného a spusťte následující příkaz:

    az account set --subscription "<SUBSCRIPTION ID>"
    
  4. Získejte nosný token pomocí následujícího příkazu:

    az account get-access-token --query accessToken
    
  5. Připojte se k rozhraní Azure REST API přes HttpRepl:

    httprepl https://management.azure.com
    
  6. Nastavte hlavičku Authorization požadavku HTTP:

    https://management.azure.com/> set header Authorization "bearer <ACCESS TOKEN>"
    
  7. Přejděte k předplatnému:

    https://management.azure.com/> cd subscriptions/<SUBSCRIPTION ID>
    
  8. Získejte seznam Azure App Service Web Apps pro vaše předplatné:

    https://management.azure.com/subscriptions/{SUBSCRIPTION ID}> get providers/Microsoft.Web/sites?api-version=2016-08-01
    

    Zobrazí se následující odpověď:

    HTTP/1.1 200 OK
    Cache-Control: no-cache
    Content-Length: 35948
    Content-Type: application/json; charset=utf-8
    Date: Thu, 19 Sep 2019 23:04:03 GMT
    Expires: -1
    Pragma: no-cache
    Strict-Transport-Security: max-age=31536000; includeSubDomains
    X-Content-Type-Options: nosniff
    x-ms-correlation-request-id: <em>xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx</em>
    x-ms-original-request-ids: <em>xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx;xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx</em>
    x-ms-ratelimit-remaining-subscription-reads: 11999
    x-ms-request-id: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
    x-ms-routing-request-id: WESTUS:xxxxxxxxxxxxxxxx:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx
    {
      "value": [
        <AZURE RESOURCES LIST>
      ]
    }
    

Přepnutí zobrazení požadavku HTTP

Ve výchozím nastavení je zobrazení odesílaného požadavku HTTP potlačeno. Je možné změnit odpovídající nastavení pro dobu trvání relace příkazového prostředí.

Povolení zobrazení požadavku

Požadavek HTTP, který se odesílá, zobrazíte spuštěním příkazu echo on. Příklad:

https://localhost:5001/people> echo on
Request echoing is on

Pro následné požadavky HTTP se v aktuální relaci zobrazují hlavičky požadavku. Příklad:

https://localhost:5001/people> post

[main 2019-06-28T18:50:11.930Z] update#setState idle
Request to https://localhost:5001...

POST /people HTTP/1.1
Content-Length: 41
Content-Type: application/json
User-Agent: HTTP-REPL

{
  "id": 0,
  "name": "Scott Addie"
}

Response from https://localhost:5001...

HTTP/1.1 201 Created
Content-Type: application/json; charset=utf-8
Date: Fri, 28 Jun 2019 18:50:21 GMT
Location: https://localhost:5001/people/4
Server: Kestrel
Transfer-Encoding: chunked

{
  "id": 4,
  "name": "Scott Addie"
}


https://localhost:5001/people>

Zákaz zobrazení požadavku

Zobrazení požadavku HTTP, který se odesílá, můžete potlačit spuštěním příkazu echo off. Příklad:

https://localhost:5001/people> echo off
Request echoing is off

Spuštění skriptu

Pokud často spouštíte stejnou sadu příkazů HttpRepl, zvažte jejich uložení do textového souboru. Příkazy v souboru mají stejnou formu jako příkazy spouštěné ručně na příkazovém řádku. Příkazy lze spouštět dávkově pomocí příkazu run. Příklad:

  1. Vytvořte textový soubor obsahující sadu příkazů oddělených koncem řádku. Pro ilustraci uvažujme soubor people-script.txt obsahující následující příkazy:

    set base https://localhost:5001
    ls
    cd People
    ls
    get 1
    
  2. Spusťte příkaz run s předáním cesty k tomuto textovému souboru. Příklad:

    https://localhost:5001/> run C:\http-repl-scripts\people-script.txt
    

    Objeví se následující výstup:

    https://localhost:5001/> set base https://localhost:5001
    Using OpenAPI description at https://localhost:5001/swagger/v1/swagger.json
    
    https://localhost:5001/> ls
    .        []
    Fruits   [get|post]
    People   [get|post]
    
    https://localhost:5001/> cd People
    /People    [get|post]
    
    https://localhost:5001/People> ls
    .      [get|post]
    ..     []
    {id}   [get|put|delete]
    
    https://localhost:5001/People> get 1
    HTTP/1.1 200 OK
    Content-Type: application/json; charset=utf-8
    Date: Fri, 12 Jul 2019 19:20:10 GMT
    Server: Kestrel
    Transfer-Encoding: chunked
    
    {
      "id": 1,
      "name": "Scott Hunter"
    }
    
    
    https://localhost:5001/People>
    

Vymazání výstupu

Pokud chcete odebrat veškerý výstup zapsaný do příkazového prostředí nástrojem HttpRepl, spusťte příkaz clear nebo cls. Představte si, že příkazové prostředí obsahuje následující výstup:

httprepl https://localhost:5001
(Disconnected)> set base "https://localhost:5001"
Using OpenAPI description at https://localhost:5001/swagger/v1/swagger.json

https://localhost:5001/> ls
.        []
Fruits   [get|post]
People   [get|post]

https://localhost:5001/>

Pro vymazání tohoto výstupu spusťte následující příkaz:

https://localhost:5001/> clear

Po spuštění předchozího příkazu obsahuje příkazové prostředí jenom následující výstup:

https://localhost:5001/>

Další materiály