Megosztás a következőn keresztül:


Webes API-k tesztelése a HttpRepl használatával

A HTTP Read-Eval-Print Loop (REPL) a következő:

  • Egy könnyű, platformfüggetlen parancssori eszköz, amelyet mindenhol támogatnak, ahol a .NET-et is támogatják.
  • HTTP-kérések készítésére szolgál ASP.NET Core webes API-k (és non-ASP.NET Core webes API-k) teszteléséhez és eredményeik megtekintéséhez.
  • Bármilyen környezetben üzemeltetett webes API-k tesztelésére képes, beleértve a localhostot és az Azure App Service-t is.

A következő HTTP-parancsok támogatottak :

A követendő lépések követéséhez tekintse meg vagy töltse le a minta ASP.NET Core webes API-t (letöltés).

Prerequisites

Installation

A HttpRepl telepítéséhez futtassa a következő parancsot:

dotnet tool install -g Microsoft.dotnet-httprepl

A Microsoft.dotnet-httprepl NuGet csomagból egy .NET-alapú globális eszköz van telepítve.

Note

Alapértelmezés szerint a telepíteni kívánt .NET bináris fájlok architektúrája a jelenleg futó operációsrendszer-architektúrát jelöli. Ha másik operációsrendszer-architektúrát szeretne megadni, tekintse meg dotnet eszköz telepítését, az --arch lehetőséget. További információ: GitHub-probléma dotnet/AspNetCore.Docs #29262.

MacOS rendszeren frissítse az elérési utat:

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

Usage

Az eszköz sikeres telepítése után futtassa a következő parancsot a HttpRepl elindításához:

httprepl

Az elérhető HttpRepl-parancsok megtekintéséhez futtassa az alábbi parancsok egyikét:

httprepl -h
httprepl --help

A következő kimenet jelenik meg:

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.

A HttpRepl parancskiegészítést kínál. A Tab billentyű lenyomásával végigvezeti a beírt karaktereket vagy API-végpontokat befejező parancsok listáján. Az alábbi szakaszok az elérhető parancssori felületi parancsokat ismertetik.

Csatlakozás a webes API-hoz

Csatlakozzon egy webes API-hoz a következő parancs futtatásával:

httprepl <ROOT URI>

<ROOT URI> a webes API alapszintű URI-ja. Például:

httprepl https://localhost:5001

Másik lehetőségként futtassa a következő parancsot bármikor, amíg a HttpRepl fut:

connect <ROOT URI>

Például:

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

Mutasson manuálisan a webes API OpenAPI-leírására

A fenti kapcsolódási parancs automatikusan megkísérli megtalálni az OpenAPI-leírást. Ha valamilyen okból ez nem lehetséges, a webes API OpenAPI-leírásának URI-ját a --openapi következő beállítással adhatja meg:

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

Például:

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

Részletes kimenet engedélyezése az OpenAPI-leírások keresésének, elemzésének és érvényesítésének részleteihez

--verbose A parancsot tartalmazó connect beállítás megadása további részleteket eredményez, amikor az eszköz megkeresi az OpenAPI-leírást, elemzi és ellenőrzi azt.

connect <ROOT URI> --verbose

Például:

(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]

Elérhető végpontok megtekintése

A web API-cím aktuális elérési útján található különböző végpontok (vezérlők) listázásához futtassa a ls vagy a dir parancsot:

https://localhost:5001/> ls

A következő kimeneti formátum jelenik meg:

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

https://localhost:5001/>

Az előző kimenet azt jelzi, hogy két vezérlő érhető el: Fruits és People. Mindkét vezérlő támogatja a paraméter nélküli HTTP GET és POST műveleteket.

Az adott vezérlőre való navigálás részletesebben is látható. Az alábbi parancs kimenete például azt mutatja, hogy a vezérlő a Fruits HTTP GET, PUT és DELETE műveleteket is támogatja. Mindegyik művelet egy paramétert id vár az útvonalon:

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

https://localhost:5001/fruits>

Másik lehetőségként futtassa a parancsot a ui webes API Swagger felhasználói felületi oldalának böngészőben való megnyitásához. Például:

https://localhost:5001/> ui

A webes API másik végpontjára való navigáláshoz futtassa a cd következő parancsot:

https://localhost:5001/> cd people

A cd parancsot követő elérési út kis- és nagybetűérzékenység nélküli. A következő kimeneti formátum jelenik meg:

/people    [get|post]

https://localhost:5001/people>

A HttpRepl testreszabása

A HttpRepl alapértelmezett színei testre szabhatók. Emellett megadható egy alapértelmezett szövegszerkesztő is. A HttpRepl-beállítások az aktuális munkamenetben megmaradnak, és a jövőbeli munkamenetekben is teljesülnek. A módosítás után a beállítások a következő fájlban lesznek tárolva:

%HOME%/.httpreplprefs

A .httpreplprefs fájl indításkor betöltődik, és futásidőben nem figyeli a módosításokat. A fájl manuális módosítása csak az eszköz újraindítása után lép érvénybe.

A beállítások megtekintése

Az elérhető beállítások megtekintéséhez futtassa a pref get parancsot. Például:

https://localhost:5001/> pref get

Az előző parancs megjeleníti az elérhető kulcs-érték párokat:

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

Színbeállítások megadása

A válaszszínezés jelenleg csak JSON esetén támogatott. Az alapértelmezett HttpRepl-eszközszínezés testreszabásához keresse meg a módosítani kívánt színnek megfelelő kulcsot. A kulcsok megkeresésével kapcsolatos útmutatásért tekintse meg a Beállítások megtekintése szakaszt . Módosítsa például a colors.json kulcs értékét a Green-ről White-re a következőképpen:

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

Csak az engedélyezett színek használhatók. Az ezt követő HTTP-kérések az új színezéssel jelenítik meg a kimenetet.

Ha adott színkulcsok nincsenek beállítva, a rendszer általánosabb kulcsokat is figyelembe veszi. Ennek a tartalék viselkedésnek a bemutatásához vegye figyelembe a következő példát:

  • Ha colors.json.name nem rendelkezik értékkel, colors.json.string akkor a rendszer használja.
  • Ha colors.json.string nem rendelkezik értékkel, colors.json.literal akkor a rendszer használja.
  • Ha colors.json.literal nem rendelkezik értékkel, colors.json akkor a rendszer használja.
  • Ha colors.json nincs értéke, a parancshéj alapértelmezett szövegszíne (AllowedColors.None) lesz használva.

Behúzás méretének beállítása

A válaszbehúzás méretének testreszabása jelenleg csak JSON esetén támogatott. Az alapértelmezett méret két szóköz. Például:

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

Az alapértelmezett méret módosításához állítsa be a formatting.json.indentSize kulcsot. Például, ha mindig négy szóközt szeretne használni:

pref set formatting.json.indentSize 4

A következő válaszok négy szóközt határoznak meg:

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

Az alapértelmezett szövegszerkesztő beállítása

Alapértelmezés szerint a HttpRepl nem rendelkezik használatra konfigurált szövegszerkesztővel. A HTTP-kérelem törzsét igénylő webes API-metódusok teszteléséhez be kell állítani egy alapértelmezett szövegszerkesztőt. A HttpRepl eszköz elindítja a konfigurált szövegszerkesztőt a kérelem törzsének írásához. Futtassa a következő parancsot az előnyben részesített szövegszerkesztő alapértelmezettként való beállításához:

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

Az előző parancs <EXECUTABLE> a szövegszerkesztő végrehajtható fájljának teljes elérési útja. Futtassa például a következő parancsot a Visual Studio Code alapértelmezett szövegszerkesztőként való beállításához:

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

Az alapértelmezett szövegszerkesztő adott parancssori felületi argumentumokkal való elindításához állítsa be a editor.command.default.arguments kulcsot. Tegyük fel például, hogy a Visual Studio Code az alapértelmezett szövegszerkesztő, és hogy mindig azt szeretné, hogy a HttpRepl egy új munkamenetben nyissa meg a Visual Studio Code-ot, és a bővítmények le vannak tiltva. Futtassa a következő parancsot:

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

Tip

Ha az alapértelmezett szerkesztő a Visual Studio Code, általában át kell adnia az argumentumot, -w hogy kényszerítse --wait a Visual Studio Code-ot, hogy várja meg, amíg bezárja a fájlt, mielőtt visszatér.

Az OpenAPI-leírás keresési elérési útjainak beállítása

Alapértelmezés szerint a HttpRepl relatív elérési utak készletével keresi meg az OpenAPI-leírást a connect parancs beállítás nélküli --openapi végrehajtásakor. Ezek a relatív elérési utak a parancsban connect megadott gyökér- és alapútvonalakkal vannak kombinálva. Az alapértelmezett relatív elérési utak a következők:

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

Ha más keresési útvonalakat szeretne használni a környezetben, adja meg a swagger.searchPaths beállításokat. Az értéknek a relatív útvonalak csővel tagolt listájának kell lennie. Például:

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

Az alapértelmezett lista teljes cseréje helyett a lista útvonalak hozzáadásával vagy eltávolításával is módosítható.

Ha egy vagy több keresési útvonalat szeretne hozzáadni az alapértelmezett listához, adja meg a swagger.addToSearchPaths beállítást. Az értéknek a relatív útvonalak csővel tagolt listájának kell lennie. Például:

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

Ha el szeretne távolítani egy vagy több keresési útvonalat az alapértelmezett listából, állítsa be a swagger.addToSearchPaths beállítást. Az értéknek a relatív útvonalak csővel tagolt listájának kell lennie. Például:

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

HTTP GET-kérelmek tesztelése

Synopsis

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

Arguments

PARAMETER

A kapcsolódó vezérlőműveleti módszer által várt útvonalparaméter, ha van ilyen.

Beállítások

A get parancshoz a következő lehetőségek érhetők el:

  • -F|--no-formatting

    Olyan jelölő, amelynek jelenléte letiltja a HTTP-válasz formázását.

  • -h|--header

    BEÁLLÍT EGY HTTP-kérés fejlécét. A következő két értékformátum támogatott:

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

    Megadja azt a fájlt, amelyhez a HTTP-válasz törzsét meg kell írni. Például: --response:body "C:\response.json". A fájl akkor jön létre, ha nem létezik.

  • --response:headers

    Megadja azt a fájlt, amelyhez a HTTP-válaszfejléceket meg kell írni. Például: --response:headers "C:\response.txt". A fájl akkor jön létre, ha nem létezik.

  • -s|--streaming

    Egy jelző, amelynek jelenléte lehetővé teszi a HTTP-válasz streamelását.

Example

HTTP GET-kérés kiállítása:

  1. Futtassa a get parancsot egy azt támogató végponton:

    https://localhost:5001/people> get
    

    Az előző parancs a következő kimeneti formátumot jeleníti meg:

    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. Egy adott rekord lekéréséhez adjon meg egy paramétert a get parancsnak:

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

    Az előző parancs a következő kimeneti formátumot jeleníti meg:

    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>
    

HTTP POST-kérelmek tesztelése

Synopsis

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

Arguments

PARAMETER

A kapcsolódó vezérlőműveleti módszer által várt útvonalparaméter, ha van ilyen.

Beállítások

  • -F|--no-formatting

    Olyan jelölő, amelynek jelenléte letiltja a HTTP-válasz formázását.

  • -h|--header

    BEÁLLÍT EGY HTTP-kérés fejlécét. A következő két értékformátum támogatott:

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

    Megadja azt a fájlt, amelyhez a HTTP-válasz törzsét meg kell írni. Például: --response:body "C:\response.json". A fájl akkor jön létre, ha nem létezik.

  • --response:headers

    Megadja azt a fájlt, amelyhez a HTTP-válaszfejléceket meg kell írni. Például: --response:headers "C:\response.txt". A fájl akkor jön létre, ha nem létezik.

  • -s|--streaming

    Egy jelző, amelynek jelenléte lehetővé teszi a HTTP-válasz streamelását.

  • -c|--content

    Beágyazott HTTP-kérelemtörzset biztosít. Például: -c "{\"id\":2,\"name\":\"Cherry\"}".

  • -f|--file

    A HTTP-kérelem törzsét tartalmazó fájl elérési útját adja meg. Például: -f "C:\request.json".

  • --no-body

    Azt jelzi, hogy nincs szükség HTTP-kérelemtörzsre.

Example

HTTP POST-kérés kiállítása:

  1. Futtassa a post parancsot egy azt támogató végponton:

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

    Az előző parancsban a Content-Type HTTP-kérés fejléce úgy van beállítva, hogy a JSON-kérelem törzsének adathordozótípusát jelezze. Az alapértelmezett szövegszerkesztő megnyit egy .tmp fájlt a HTTP-kérelem törzsét képviselő JSON-sablonnal. Például:

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

    Tip

    Az alapértelmezett szövegszerkesztő beállításához tekintse meg az Alapértelmezett szövegszerkesztő beállítása szakaszt.

  2. Módosítsa a JSON-sablont a modellérvényesítési követelményeknek való megfelelés érdekében:

    {
      "id": 0,
      "name": "Scott Addie"
    }
    
  3. Mentse a .tmp fájlt, és zárja be a szövegszerkesztőt. A parancshéjban a következő kimenet jelenik meg:

    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>
    

HTTP PUT-kérelmek tesztelése

Synopsis

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

Arguments

PARAMETER

A kapcsolódó vezérlőműveleti módszer által várt útvonalparaméter, ha van ilyen.

Beállítások

  • -F|--no-formatting

    Olyan jelölő, amelynek jelenléte letiltja a HTTP-válasz formázását.

  • -h|--header

    BEÁLLÍT EGY HTTP-kérés fejlécét. A következő két értékformátum támogatott:

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

    Megadja azt a fájlt, amelyhez a HTTP-válasz törzsét meg kell írni. Például: --response:body "C:\response.json". A fájl akkor jön létre, ha nem létezik.

  • --response:headers

    Megadja azt a fájlt, amelyhez a HTTP-válaszfejléceket meg kell írni. Például: --response:headers "C:\response.txt". A fájl akkor jön létre, ha nem létezik.

  • -s|--streaming

    Egy jelző, amelynek jelenléte lehetővé teszi a HTTP-válasz streamelását.

  • -c|--content

    Beágyazott HTTP-kérelemtörzset biztosít. Például: -c "{\"id\":2,\"name\":\"Cherry\"}".

  • -f|--file

    A HTTP-kérelem törzsét tartalmazó fájl elérési útját adja meg. Például: -f "C:\request.json".

  • --no-body

    Azt jelzi, hogy nincs szükség HTTP-kérelemtörzsre.

Example

HTTP PUT-kérés kiállítása:

  1. Nem kötelező: A módosítás előtt futtassa a get parancsot az adatok megtekintéséhez:

    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. Futtassa a put parancsot egy azt támogató végponton:

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

    Az előző parancsban a Content-Type HTTP-kérés fejléce úgy van beállítva, hogy a JSON-kérelem törzsének adathordozótípusát jelezze. Az alapértelmezett szövegszerkesztő megnyit egy .tmp fájlt a HTTP-kérelem törzsét képviselő JSON-sablonnal. Például:

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

    Tip

    Az alapértelmezett szövegszerkesztő beállításához tekintse meg az Alapértelmezett szövegszerkesztő beállítása szakaszt.

  3. Módosítsa a JSON-sablont a modellérvényesítési követelményeknek való megfelelés érdekében:

    {
      "id": 2,
      "name": "Cherry"
    }
    
  4. Mentse a .tmp fájlt, és zárja be a szövegszerkesztőt. A parancshéjban a következő kimenet jelenik meg:

    [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. Nem kötelező: Adjon ki egy get parancsot a módosítások megtekintéséhez. Ha például beírta a "Cherry" kifejezést a szövegszerkesztőbe, get a következő kimenetet adja vissza:

    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>
    

HTTP DELETE-kérelmek tesztelése

Synopsis

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

Arguments

PARAMETER

A kapcsolódó vezérlőműveleti módszer által várt útvonalparaméter, ha van ilyen.

Beállítások

  • -F|--no-formatting

    Olyan jelölő, amelynek jelenléte letiltja a HTTP-válasz formázását.

  • -h|--header

    BEÁLLÍT EGY HTTP-kérés fejlécét. A következő két értékformátum támogatott:

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

    Megadja azt a fájlt, amelyhez a HTTP-válasz törzsét meg kell írni. Például: --response:body "C:\response.json". A fájl akkor jön létre, ha nem létezik.

  • --response:headers

    Megadja azt a fájlt, amelyhez a HTTP-válaszfejléceket meg kell írni. Például: --response:headers "C:\response.txt". A fájl akkor jön létre, ha nem létezik.

  • -s|--streaming

    Egy jelző, amelynek jelenléte lehetővé teszi a HTTP-válasz streamelását.

Example

HTTP DELETE-kérés kiállítása:

  1. Nem kötelező: A módosítás előtt futtassa a get parancsot az adatok megtekintéséhez:

    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. Futtassa a delete parancsot egy azt támogató végponton:

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

    Az előző parancs a következő kimeneti formátumot jeleníti meg:

    HTTP/1.1 204 No Content
    Date: Fri, 28 Jun 2019 17:36:42 GMT
    Server: Kestrel
    
  3. Nem kötelező: Adjon ki egy get parancsot a módosítások megtekintéséhez. Ebben a példában a get következő kimenetet adja vissza:

    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>
    

HTTP PATCH-kérelmek tesztelése

Synopsis

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

Arguments

PARAMETER

A kapcsolódó vezérlőműveleti módszer által várt útvonalparaméter, ha van ilyen.

Beállítások

  • -F|--no-formatting

    Olyan jelölő, amelynek jelenléte letiltja a HTTP-válasz formázását.

  • -h|--header

    BEÁLLÍT EGY HTTP-kérés fejlécét. A következő két értékformátum támogatott:

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

    Megadja azt a fájlt, amelyhez a HTTP-válasz törzsét meg kell írni. Például: --response:body "C:\response.json". A fájl akkor jön létre, ha nem létezik.

  • --response:headers

    Megadja azt a fájlt, amelyhez a HTTP-válaszfejléceket meg kell írni. Például: --response:headers "C:\response.txt". A fájl akkor jön létre, ha nem létezik.

  • -s|--streaming

    Egy jelző, amelynek jelenléte lehetővé teszi a HTTP-válasz streamelását.

  • -c|--content

    Beágyazott HTTP-kérelemtörzset biztosít. Például: -c "{\"id\":2,\"name\":\"Cherry\"}".

  • -f|--file

    A HTTP-kérelem törzsét tartalmazó fájl elérési útját adja meg. Például: -f "C:\request.json".

  • --no-body

    Azt jelzi, hogy nincs szükség HTTP-kérelemtörzsre.

HTTP HEAD-kérelmek tesztelése

Synopsis

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

Arguments

PARAMETER

A kapcsolódó vezérlőműveleti módszer által várt útvonalparaméter, ha van ilyen.

Beállítások

  • -F|--no-formatting

    Olyan jelölő, amelynek jelenléte letiltja a HTTP-válasz formázását.

  • -h|--header

    BEÁLLÍT EGY HTTP-kérés fejlécét. A következő két értékformátum támogatott:

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

    Megadja azt a fájlt, amelyhez a HTTP-válasz törzsét meg kell írni. Például: --response:body "C:\response.json". A fájl akkor jön létre, ha nem létezik.

  • --response:headers

    Megadja azt a fájlt, amelyhez a HTTP-válaszfejléceket meg kell írni. Például: --response:headers "C:\response.txt". A fájl akkor jön létre, ha nem létezik.

  • -s|--streaming

    Egy jelző, amelynek jelenléte lehetővé teszi a HTTP-válasz streamelását.

HTTP OPTIONS-kérelmek tesztelése

Synopsis

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

Arguments

PARAMETER

A kapcsolódó vezérlőműveleti módszer által várt útvonalparaméter, ha van ilyen.

Beállítások

  • -F|--no-formatting

    Olyan jelölő, amelynek jelenléte letiltja a HTTP-válasz formázását.

  • -h|--header

    BEÁLLÍT EGY HTTP-kérés fejlécét. A következő két értékformátum támogatott:

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

    Megadja azt a fájlt, amelyhez a HTTP-válasz törzsét meg kell írni. Például: --response:body "C:\response.json". A fájl akkor jön létre, ha nem létezik.

  • --response:headers

    Megadja azt a fájlt, amelyhez a HTTP-válaszfejléceket meg kell írni. Például: --response:headers "C:\response.txt". A fájl akkor jön létre, ha nem létezik.

  • -s|--streaming

    Egy jelző, amelynek jelenléte lehetővé teszi a HTTP-válasz streamelását.

HTTP-kérelemfejlécek beállítása

HTTP-kérelem fejlécének beállításához használja az alábbi módszerek egyikét:

  • Állítsa be közvetlenül a HTTP-kéréssel. Például:

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

    Az előző megközelítéssel minden egyes különálló HTTP-kérelemfejlécnek saját -h beállításra van szüksége.

  • A HTTP-kérés elküldése előtt állítsa be. Például:

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

    Amikor a fejlécet a kérés elküldése előtt állítja be, a fejléc a parancshéj-munkamenet időtartamára lesz beállítva. A fejléc törléséhez adjon meg egy üres értéket. Például:

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

Biztonságos végpontok tesztelése

A HttpRepl a következő módokon támogatja a biztonságos végpontok tesztelését:

  • A bejelentkezett felhasználó alapértelmezett hitelesítő adatain keresztül.
  • HTTP-kérelem-fejlécek használatával.

Alapértelmezett hitelesítő adatok

Fontolja meg az IIS-ben üzemeltetett és Windows-hitelesítéssel védett webes API-t. Azt szeretné, hogy az eszközt futtató felhasználó hitelesítő adatai átfolyjanak a tesztelt HTTP-végpontokra. A bejelentkezett felhasználó alapértelmezett hitelesítő adatainak átadása:

  1. Állítsa be a httpClient.useDefaultCredentials beállítást a következőre: true.

    pref set httpClient.useDefaultCredentials true
    
  2. Lépjen ki és indítsa újra az eszközt, mielőtt újabb kérést küldene a webes API-nak.

Alapértelmezett proxy hitelesítő adatok

Fontolja meg azt a forgatókönyvet, amelyben a tesztelt webes API egy Windows-hitelesítéssel védett proxy mögött található. Azt szeretné, hogy az eszközt futtató felhasználó hitelesítő adatai átfolyjanak a proxyba. A bejelentkezett felhasználó alapértelmezett hitelesítő adatainak átadása:

  1. Állítsa be a httpClient.proxy.useDefaultCredentials beállítást a következőre: true.

    pref set httpClient.proxy.useDefaultCredentials true
    
  2. Lépjen ki és indítsa újra az eszközt, mielőtt újabb kérést küldene a webes API-nak.

HTTP-kérelem fejlécei

A támogatott hitelesítési és engedélyezési sémák például a következők:

  • alapszintű hitelesítés
  • JWT-tulajdonosi jogkivonatok
  • kivonatoló hitelesítés

Küldhet például egy tulajdonosi jogkivonatot egy végpontnak a következő paranccsal:

set header Authorization "bearer <TOKEN VALUE>"

Az Azure által üzemeltetett végpont eléréséhez vagy az Azure REST API használatához tulajdonosi jogkivonatra van szükség. Az alábbi lépésekkel beszerezhet egy tulajdonosi jogkivonatot az Azure-előfizetéshez az Azure CLI-vel. A HttpRepl beállítja a tulajdonosi jogkivonatot egy HTTP-kérés fejlécében. A rendszer lekéri az Azure App Service Web Apps listáját.

  1. Jelentkezzen be az Azure-ba:

    az login
    
  2. Kérje le az előfizetés azonosítóját a következő paranccsal:

    az account show --query id
    
  3. Másolja ki az előfizetés azonosítóját, és futtassa a következő parancsot:

    az account set --subscription "<SUBSCRIPTION ID>"
    
  4. Szerezze meg a hozzáférési tokent a következő paranccsal:

    az account get-access-token --query accessToken
    
  5. Csatlakozzon az Azure API-hoz REST a HttpRepl használatával:

    httprepl https://management.azure.com
    
  6. A HTTP-kérelem fejlécének Authorization beállítása:

    https://management.azure.com/> set header Authorization "bearer <ACCESS TOKEN>"
    
  7. Lépjen az előfizetéshez:

    https://management.azure.com/> cd subscriptions/<SUBSCRIPTION ID>
    
  8. Az előfizetés Azure App Service Web Apps-alkalmazásainak listájának lekérése:

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

    A következő válasz jelenik meg:

    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>
      ]
    }
    

HTTP-kérések megjelenítésének váltása

Alapértelmezés szerint a rendszer letiltja az elküldött HTTP-kérés megjelenítését. A parancshéj-munkamenet időtartamára módosíthatja a megfelelő beállítást.

Kérelem megjelenítésének engedélyezése

A parancs futtatásával megtekintheti az elküldött HTTP-kérést echo on . Például:

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

Az aktuális munkamenet későbbi HTTP-kérései megjelenítik a kérés fejléceit. Például:

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>

A kérések megjelenítésének letiltása

A parancs futtatásával letiltja az elküldött HTTP-kérés megjelenítését echo off . Például:

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

Szkript futtatása

Ha gyakran hajtja végre ugyanazt a HttpRepl-parancskészletet, fontolja meg, hogy egy szövegfájlban tárolja őket. A fájl parancsai ugyanúgy alakulnak, mint a parancssorban manuálisan végrehajtott parancsok. A parancsok kötegelt módon végrehajthatók a run parancs használatával. Például:

  1. Hozzon létre egy szövegfájlt, amely új vonallal tagolt parancsokat tartalmaz. A szemléltetés érdekében fontolja meg a következő parancsokat tartalmazó people-script.txt fájlt:

    set base https://localhost:5001
    ls
    cd People
    ls
    get 1
    
  2. Hajtsa végre a run parancsot, és adja meg a szövegfájl elérési útját. Például:

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

    A következő kimenet jelenik meg:

    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>
    

A kimenet törlése

A HttpRepl eszköz által a parancshéjba írt összes kimenet eltávolításához futtassa a clear vagy cls parancsot. A szemléltetéshez képzelje el, hogy a parancshéj a következő kimenetet tartalmazza:

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

Futtassa a következő parancsot a kimenet törléséhez:

https://localhost:5001/> clear

Az előző parancs futtatása után a parancshéj csak a következő kimenetet tartalmazza:

https://localhost:5001/>

További erőforrások