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

Scott Addie

Smyčka HTTP Read-Eval-Print (REPL) je:

  • Jednoduchý nástroj příkazového řádku pro více platforem, který je podporovaný všude, kde se podporuje .NET Core.
  • Používá se k provádění požadavků HTTP ASP.NET Core webových rozhraní API (a ASP.NET Core webových rozhraní API) a zobrazení jejich výsledků.
  • Umožňuje testovat webová rozhraní API hostovaná v libovolném prostředí, včetně localhost a Azure App Service.

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

Pokud chcete postup sledovat, prohlédněte si nebo si stáhněte ASP.NET Core webové rozhraní API ( jakstáhnout).

Požadavky

Instalace

Pokud chcete nainstalovat HttpRepl, spusťte následující příkaz:

dotnet tool install -g Microsoft.dotnet-httprepl

Nástroj .NET Core Global tool se instaluje z balíčku Microsoft.dotnet-httprepl NuGet.

Využití

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

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 procházíte seznam příkazů, které dokončují znaky nebo koncový bod rozhraní API, který jste zašli. Následující části popisují dostupné příkazy rozhraní příkazového řádku.

Připojení k webovému rozhraní API

Připojení k webovému rozhraní API spuštěním následujícího příkazu:

httprepl <ROOT URI>

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

httprepl https://localhost:5001

Případně můžete spustit následující příkaz kdykoli, když je spuštěn httprepl:

connect <ROOT URI>

Například:

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

Ručně přejděte na popis OpenAPI pro webové rozhraní API.

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

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

Například:

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

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

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

connect <ROOT URI> --verbose

Napří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ě k adrese webového rozhraní API, spusťte ls dir příkaz nebo:

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: a Fruits People . Oba kontrolery podporují bezparametrové operace HTTP GET a POST.

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

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

https://localhost:5001/fruits>

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

https://localhost:5001/> ui

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

https://localhost:5001/> cd people

Cesta následující za cd příkazem bez rozlišení velkých a malých písmen. Zobrazí se následující výstupní formát:

/people    [get|post]

https://localhost:5001/people>

Přizpůsobení httpreplu

Výchozí barvy HttpRepl je možné přizpůsobit. Kromě toho je možné definovat výchozí textový editor. Předvolby HttpRepl se uchová v aktuální relaci a budou se respektovat v budoucích relacích. Po upravení se předvolby uloží do následujícího souboru:

%HOME%/.httpreplprefs

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

Zobrazení nastavení

Pokud chcete zobrazit dostupná nastavení, spusťte pref get příkaz . Napří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

Zabarvení odpovědí se v současné době podporuje pouze 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í klíčů najdete v části Zobrazení nastavení. Například následujícím způsobem změňte hodnotu klíče colors.json z na Green White :

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

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

Pokud nejsou nastavené konkrétní klíče barev, zvaží se obecnější klíče. Pro demonstraci tohoto záložního chování zvažte 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 nemá hodnotu , použije se výchozí barva textu v příkazovém colors.json prostředí ( AllowedColors.None ).

Nastavení velikosti odsazení

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

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

Pokud chcete změnit výchozí velikost, nastavte formatting.json.indentSize klíč. Pokud například chcete vždy použít č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á HttpRepl žádný textový editor nakonfigurovaný pro použití. Pokud chcete otestovat metody webového rozhraní API, které vyžadují text požadavku HTTP, musíte nastavit výchozí textový editor. Nástroj HttpRepl spustí nakonfigurovaný textový editor pro jediný účel psaní textu požadavku. Spuštěním následujícího příkazu nastavte preferovaný textový editor jako výchozí:

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

V předchozím příkazu je úplná cesta ke spustitelnému souboru <EXECUTABLE> textového editoru. Například spuštěním následujícího příkazu nastavte Visual Studio Code jako výchozí textový editor:

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

Chcete-li spustit výchozí textový editor s konkrétními argumenty rozhraní příkazového řádku, nastavte editor.command.default.arguments klíč. předpokládejme například, že Visual Studio Code je výchozím textovým editorem a že chcete, aby se v nástroji HttpRepl otevírala Visual Studio Code v nové relaci s vypnutý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áš výchozí editor Visual Studio Code, obvykle budete chtít předat -w --wait argument nebo, který vynutí Visual Studio Code počkat na zavření souboru před vrácením.

Nastavení vyhledávacích cest pro 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í connect příkazu bez --openapi Možnosti. Tyto relativní cesty jsou kombinovány s kořenovou a základní cestou specifikovanou v connect příkazu. Výchozí relativní cesty jsou:

  • swagger.jsna
  • Swagger/v1/swagger.jsna
  • /swagger.jsna
  • /Swagger/v1/swagger.js
  • openapi.jsna
  • /openapi.jsna

Pokud chcete ve svém prostředí použít jinou sadu vyhledávacích cest, nastavte swagger.searchPaths Předvolby. Hodnota musí být seznam relativních cest oddělených svislým kanálem. Například:

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

Místo toho, aby se výchozí seznam zcela nahradil, se dá seznam také upravit přidáním nebo odebráním cest.

Chcete-li přidat jednu nebo více cest hledání k výchozímu seznamu, nastavte swagger.addToSearchPaths Předvolby. Hodnota musí být seznam relativních cest oddělených svislým kanálem. Například:

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

Chcete-li odebrat jednu nebo více cest hledání z výchozího seznamu, nastavte swagger.addToSearchPaths Předvolby. Hodnota musí být seznam relativních cest oddělených svislým kanálem. Například:

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

Testování požadavků HTTP GET

Stručný obsah

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

Argumenty

PARAMETER

Parametr trasy (pokud existuje), který očekává přidružená metoda akce kontroleru.

Možnosti

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

  • -F|--no-formatting

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

  • -h|--header

    Nastaví hlavičku požadavku HTTP. Podporují se tyto dva formáty hodnot:

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

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

  • --response:headers

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

  • -s|--streaming

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

Příklad

Vystavení požadavku HTTP GET:

  1. Spusťte get příkaz na 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 určitý záznam předáním parametru get příkazu:

    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>
    

Test požadavků HTTP POST

Stručný obsah

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), který očekává přidružená metoda akce kontroleru.

Možnosti

  • -F|--no-formatting

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

  • -h|--header

    Nastaví hlavičku požadavku HTTP. Podporují se tyto dva formáty hodnot:

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

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

  • --response:headers

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

  • -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

    Označuje, že není potřeba žádný text požadavku HTTP.

Příklad

Vystavení požadavku HTTP POST:

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

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

    V předchozím příkazu Content-Type je hlavička požadavku HTTP nastavená tak, aby označovala typ média textu požadavku JSON. Výchozí textový editor otevře soubor . tmp se ŠABLONou JSON, která představuje tělo požadavku HTTP. Například:

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

    Tip

    Chcete-li 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 ukonč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>
    

Test požadavků HTTP PUT

Stručný obsah

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), který očekává přidružená metoda akce kontroleru.

Možnosti

  • -F|--no-formatting

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

  • -h|--header

    Nastaví hlavičku požadavku HTTP. Podporují se tyto dva formáty hodnot:

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

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

  • --response:headers

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

  • -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

    Označuje, že není potřeba žádný text požadavku HTTP.

Příklad

Vydání požadavku HTTP PUT:

  1. Volitelné: get pro zobrazení dat před úpravou spusťte příkaz:

    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 put příkaz na koncovém bodu, který ho podporuje:

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

    V předchozím příkazu Content-Type je hlavička požadavku HTTP nastavená tak, aby označovala typ média textu požadavku JSON. Výchozí textový editor otevře soubor . tmp se ŠABLONou JSON, která představuje tělo požadavku HTTP. Například:

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

    Tip

    Chcete-li 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 ukonč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é: vydejte get příkaz pro zobrazení úprav. Například pokud jste v textovém editoru zadali "třešně", 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>
    

Test požadavků HTTP DELETE

Stručný obsah

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

Argumenty

PARAMETER

Parametr trasy (pokud existuje), který očekává přidružená metoda akce kontroleru.

Možnosti

  • -F|--no-formatting

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

  • -h|--header

    Nastaví hlavičku požadavku HTTP. Podporují se tyto dva formáty hodnot:

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

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

  • --response:headers

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

  • -s|--streaming

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

Příklad

Postup při vystavení žádosti o odstranění protokolu HTTP:

  1. Volitelné: get pro zobrazení dat před úpravou spusťte příkaz:

    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 delete příkaz na 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é: vydejte get příkaz pro zobrazení úprav. 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>
    

Test požadavků na opravy HTTP

Stručný obsah

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), který očekává přidružená metoda akce kontroleru.

Možnosti

  • -F|--no-formatting

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

  • -h|--header

    Nastaví hlavičku požadavku HTTP. Podporují se tyto dva formáty hodnot:

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

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

  • --response:headers

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

  • -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

    Označuje, že není potřeba žádný text požadavku HTTP.

Test požadavků HTTP HEAD

Stručný obsah

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

Argumenty

PARAMETER

Parametr trasy (pokud existuje), který očekává přidružená metoda akce kontroleru.

Možnosti

  • -F|--no-formatting

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

  • -h|--header

    Nastaví hlavičku požadavku HTTP. Podporují se tyto dva formáty hodnot:

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

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

  • --response:headers

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

  • -s|--streaming

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

Požadavky na test možností protokolu HTTP

Stručný obsah

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

Argumenty

PARAMETER

Parametr trasy (pokud existuje), který očekává přidružená metoda akce kontroleru.

Možnosti

  • -F|--no-formatting

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

  • -h|--header

    Nastaví hlavičku požadavku HTTP. Podporují se tyto dva formáty hodnot:

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

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

  • --response:headers

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

  • -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ů:

  • Nastavte inline s požadavkem HTTP. Například:

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

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

  • Nastavte před odesláním požadavku HTTP. Napří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. Například:

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

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

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

  • Prostřednictvím 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 webové rozhraní API, které testujete a které je hostované ve službě IIS a zabezpečené Windows ověřováním. Chcete, aby se přihlašovací údaje uživatele, který nástroj s jeho spuštěním, přetékaly do testovaných koncových bodů HTTP. Předání výchozích přihlašovacích údajů přihlášeného uživatele:

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

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

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

Představte si scénář, ve kterém se webové rozhraní API, které testujete, nachází za proxy serverem zabezpečeným Windows ověřováním. Chcete, aby přihlašovací údaje uživatele, na který nástroj běží, proudí do proxy serveru. Předání výchozích přihlašovacích údajů přihlášeného uživatele:

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

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

Hlavičky požadavku HTTP

Příklady podporovaných schémat ověřování a autorizace:

  • základní ověřování
  • Bearer tokeny JWT
  • Ověřování hodnotou hash

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

set header Authorization "bearer <TOKEN VALUE>"

Pro přístup ke koncovému bodu hostovanému v Azure nebo k použití azure REST APIpotřebujete bearer token. Pomocí následujícího postupu můžete získat bearer token pro vaše předplatné Azure prostřednictvím Azure CLI. HttpRepl nastaví v hlavičce požadavku HTTP bearer token. Načte se Azure App Service Web Apps souborů.

  1. Přihlaste se k Azure:

    az login
    
  2. Pomocí následujícího příkazu získejte ID vašeho předplatného:

    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. Pomocí následujícího příkazu získejte token beareru:

    az account get-access-token --query accessToken
    
  5. Připojení k azure REST API přes HttpRepl:

    httprepl https://management.azure.com
    
  6. Nastavte Authorization hlavičku 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 položek předplatného Azure App Service Web Apps:

    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í se potlačí zobrazení odesílané žádosti HTTP. Odpovídající nastavení je možné změnit po dobu trvání relace příkazového prostředí.

Povolení zobrazení požadavku

Spuštěním příkazu zobrazte požadavek HTTP, který se echo on odesílá. Například:

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

Následné požadavky HTTP v aktuální relaci zobrazí hlavičky požadavku. Napří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>

Zakázání zobrazení požadavku

Potlačí zobrazení odesílané žádosti HTTP spuštěním echo off příkazu . Napří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í stejný tvar jako příkazy, které se spouštěny ručně na příkazovém řádku. Příkazy je možné provádět dávkově pomocí run příkazu . Například:

  1. Vytvořte textový soubor obsahující sadu příkazů s oddělovači newline. Pro ilustraci zvažtepeople-script.txt, který obsahuje následující příkazy:

    set base https://localhost:5001
    ls
    cd People
    ls
    get 1
    
  2. Spusťte run příkaz a předáte cestu k textovému souboru. Napří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 všechny výstupy zapsané do příkazového prostředí nástrojem HttpRepl, spusťte clear cls příkaz nebo . Pro ilustraci si představte, ž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/>

Spuštěním následujícího příkazu vymažte výstup:

https://localhost:5001/> clear

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

https://localhost:5001/>

Další zdroje informací