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]
Navigace ve webovém rozhraní API
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
Navigace na koncový bod
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:
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 secolors.json.string
. - Pokud
colors.json.string
nemá hodnotu, použije secolors.json.literal
. - Pokud
colors.json.literal
nemá hodnotu, použije secolors.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:
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:
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>
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:
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.
Upravte šablonu JSON tak, aby splňovala požadavky na ověření modelu:
{ "id": 0, "name": "Scott Addie" }
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:
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" } ]
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.
Upravte šablonu JSON tak, aby splňovala požadavky na ověření modelu:
{ "id": 2, "name": "Cherry" }
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
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:
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" } ]
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
Volitelné: Pokud chcete zobrazit změny, zadejte příkaz
get
. V tomto příkladuget
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:
Nastavte předvolbu
httpClient.useDefaultCredentials
natrue
:pref set httpClient.useDefaultCredentials true
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:
Nastavte předvolbu
httpClient.proxy.useDefaultCredentials
natrue
:pref set httpClient.proxy.useDefaultCredentials true
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.
Přihlaste se do Azure:
az login
Získejte ID předplatného pomocí následujícího příkazu:
az account show --query id
Zkopírujte ID předplatného a spusťte následující příkaz:
az account set --subscription "<SUBSCRIPTION ID>"
Získejte nosný token pomocí následujícího příkazu:
az account get-access-token --query accessToken
Připojte se k rozhraní Azure REST API přes HttpRepl:
httprepl https://management.azure.com
Nastavte hlavičku
Authorization
požadavku HTTP:https://management.azure.com/> set header Authorization "bearer <ACCESS TOKEN>"
Přejděte k předplatnému:
https://management.azure.com/> cd subscriptions/<SUBSCRIPTION ID>
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:
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
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/>