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]
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ě 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
Přechod ke koncovému bodu
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:
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.namenemá hodnotu , použije secolors.json.string. - Pokud
colors.json.stringnemá hodnotu , použije secolors.json.literal. - Pokud
colors.json.literalnemá hodnotu , použije secolors.json. - Pokud nemá hodnotu , použije se výchozí barva textu v příkazovém
colors.jsonprostř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:
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-formattingPříznak, jehož přítomnost potlačuje formátování odpovědi HTTP.
-h|--headerNastaví hlavičku požadavku HTTP. Podporují se tyto dva formáty hodnot:
{header}={value}{header}:{value}
--response:bodyUrč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:headersUrč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|--streamingPříznak, jehož přítomnost umožňuje streamování odpovědi HTTP.
Příklad
Vystavení požadavku HTTP GET:
Spusťte
getpříkaz na koncovém bodu, který ho podporuje:https://localhost:5001/people> getPř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 určitý záznam předáním parametru
getpříkazu:https://localhost:5001/people> get 2Př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-formattingPříznak, jehož přítomnost potlačuje formátování odpovědi HTTP.
-h|--headerNastaví hlavičku požadavku HTTP. Podporují se tyto dva formáty hodnot:
{header}={value}{header}:{value}
--response:bodyUrč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:headersUrč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|--streamingPříznak, jehož přítomnost umožňuje streamování odpovědi HTTP.
-c|--contentPoskytuje vložený text požadavku HTTP. Například,
-c "{"id":2,"name":"Cherry"}".-f|--filePoskytuje cestu k souboru obsahujícímu text požadavku HTTP. Například,
-f "C:\request.json".--no-bodyOznačuje, že není potřeba žádný text požadavku HTTP.
Příklad
Vystavení požadavku HTTP POST:
Spusťte
postpříkaz na koncovém bodu, který ho podporuje:https://localhost:5001/people> post -h Content-Type=application/jsonV předchozím příkazu
Content-Typeje 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 .
Upravte šablonu JSON tak, aby splňovala požadavky na ověření modelu:
{ "id": 0, "name": "Scott Addie" }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-formattingPříznak, jehož přítomnost potlačuje formátování odpovědi HTTP.
-h|--headerNastaví hlavičku požadavku HTTP. Podporují se tyto dva formáty hodnot:
{header}={value}{header}:{value}
--response:bodyUrč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:headersUrč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|--streamingPříznak, jehož přítomnost umožňuje streamování odpovědi HTTP.
-c|--contentPoskytuje vložený text požadavku HTTP. Například,
-c "{"id":2,"name":"Cherry"}".-f|--filePoskytuje cestu k souboru obsahujícímu text požadavku HTTP. Například,
-f "C:\request.json".--no-bodyOznačuje, že není potřeba žádný text požadavku HTTP.
Příklad
Vydání požadavku HTTP PUT:
Volitelné:
getpro 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" } ]Spusťte
putpříkaz na koncovém bodu, který ho podporuje:https://localhost:5001/fruits> put 2 -h Content-Type=application/jsonV předchozím příkazu
Content-Typeje 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 .
Upravte šablonu JSON tak, aby splňovala požadavky na ověření modelu:
{ "id": 2, "name": "Cherry" }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: KestrelVolitelné: vydejte
getpříkaz pro zobrazení úprav. Například pokud jste v textovém editoru zadali "třešně",getvrá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-formattingPříznak, jehož přítomnost potlačuje formátování odpovědi HTTP.
-h|--headerNastaví hlavičku požadavku HTTP. Podporují se tyto dva formáty hodnot:
{header}={value}{header}:{value}
--response:bodyUrč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:headersUrč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|--streamingPříznak, jehož přítomnost umožňuje streamování odpovědi HTTP.
Příklad
Postup při vystavení žádosti o odstranění protokolu HTTP:
Volitelné:
getpro 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" } ]Spusťte
deletepříkaz na koncovém bodu, který ho podporuje:https://localhost:5001/fruits> delete 2Př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: KestrelVolitelné: vydejte
getpříkaz pro zobrazení úprav. V tomto příkladugetvrá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-formattingPříznak, jehož přítomnost potlačuje formátování odpovědi HTTP.
-h|--headerNastaví hlavičku požadavku HTTP. Podporují se tyto dva formáty hodnot:
{header}={value}{header}:{value}
--response:bodyUrč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:headersUrč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|--streamingPříznak, jehož přítomnost umožňuje streamování odpovědi HTTP.
-c|--contentPoskytuje vložený text požadavku HTTP. Například,
-c "{"id":2,"name":"Cherry"}".-f|--filePoskytuje cestu k souboru obsahujícímu text požadavku HTTP. Například,
-f "C:\request.json".--no-bodyOznač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-formattingPříznak, jehož přítomnost potlačuje formátování odpovědi HTTP.
-h|--headerNastaví hlavičku požadavku HTTP. Podporují se tyto dva formáty hodnot:
{header}={value}{header}:{value}
--response:bodyUrč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:headersUrč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|--streamingPří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-formattingPříznak, jehož přítomnost potlačuje formátování odpovědi HTTP.
-h|--headerNastaví hlavičku požadavku HTTP. Podporují se tyto dva formáty hodnot:
{header}={value}{header}:{value}
--response:bodyUrč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:headersUrč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|--streamingPří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/jsonU předchozího přístupu každá odlišná hlavička požadavku HTTP vyžaduje vlastní
-hmožnost.Nastavte před odesláním požadavku HTTP. Například:
https://localhost:5001/people> set header Content-Type application/jsonPř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:
Nastavte
httpClient.useDefaultCredentialspředvolbu natrue:pref set httpClient.useDefaultCredentials truePř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:
Nastavte
httpClient.proxy.useDefaultCredentialspředvolbu natrue:pref set httpClient.proxy.useDefaultCredentials truePř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ů.
Přihlaste se k Azure:
az loginPomocí následujícího příkazu získejte ID vašeho předplatného:
az account show --query idZkopírujte ID předplatného a spusťte následující příkaz:
az account set --subscription "<SUBSCRIPTION ID>"Pomocí následujícího příkazu získejte token beareru:
az account get-access-token --query accessTokenPřipojení k azure REST API přes HttpRepl:
httprepl https://management.azure.comNastavte
Authorizationhlavičku 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 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-01Zobrazí 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:
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 1Spusťte
runpříkaz a předáte cestu k textovému souboru. Například:https://localhost:5001/> run C:\http-repl-scripts\people-script.txtObjeví 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/>