Delen via


Web-API's testen met httpRepl

De HTTP Read-Eval-Print Loop (REPL) is:

  • Een lichtgewicht, platformoverschrijdend opdrachtregelprogramma dat wordt ondersteund in alle omgevingen waar .NET wordt ondersteund.
  • Wordt gebruikt voor het maken van HTTP-aanvragen om ASP.NET Core-web-API's (en non-ASP.NET Core-web-API's) te testen en hun resultaten weer te geven.
  • Kan web-API's testen die worden gehost in elke omgeving, waaronder localhost en Azure App Service.

De volgende HTTP-woorden worden ondersteund:

Als u deze wilt volgen, bekijkt of downloadt u de voorbeeld-ASP.NET Core-web-API (downloaden).

Prerequisites

Installation

Voer de volgende opdracht uit om de HttpRepl te installeren:

dotnet tool install -g Microsoft.dotnet-httprepl

Er is een .NET Global Tool geïnstalleerd vanuit het NuGet-pakket Microsoft.dotnet-httprepl .

Note

De architectuur van de binaire .NET-bestanden die moeten worden geïnstalleerd, vertegenwoordigt standaard de huidige besturingssysteemarchitectuur. Zie dotnet tool install, --arch optionom een andere besturingssysteemarchitectuur op te geven. Zie GitHub-probleem dotnet/AspNetCore.Docs #29262voor meer informatie.

Werk het pad bij op macOS:

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

Usage

Voer na een geslaagde installatie van het hulpprogramma de volgende opdracht uit om de HttpRepl te starten:

httprepl

Voer een van de volgende opdrachten uit om de beschikbare HttpRepl-opdrachten weer te geven:

httprepl -h
httprepl --help

De volgende uitvoer wordt weergegeven:

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 biedt opdrachtvoltooiing. Als u op de Tab-toets drukt, wordt de lijst met opdrachten doorlopen die de tekens of het API-eindpunt voltooien dat u hebt getypt. In de volgende secties worden de beschikbare CLI-opdrachten beschreven.

Verbinding maken met de web-API

Maak verbinding met een web-API door de volgende opdracht uit te voeren:

httprepl <ROOT URI>

<ROOT URI> is de basis-URI voor de web-API. For example:

httprepl https://localhost:5001

U kunt ook de volgende opdracht op elk gewenst moment uitvoeren terwijl httpRepl wordt uitgevoerd:

connect <ROOT URI>

For example:

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

Wijs handmatig de OpenAPI-beschrijving voor de web-API aan

Met de bovenstaande verbindingsopdracht wordt geprobeerd de OpenAPI-beschrijving automatisch te vinden. Als dit om een of andere reden niet mogelijk is, kunt u de URI van de OpenAPI-beschrijving voor de web-API opgeven met behulp van de --openapi optie:

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

For example:

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

Schakel gedetailleerde uitvoer in voor meer informatie over het zoeken, parseren en valideren van OpenAPI-beschrijvingen

Als u de --verbose optie met de connect opdracht opgeeft, worden er meer details geproduceerd wanneer het hulpprogramma zoekt naar de OpenAPI-beschrijving, parseert en valideert.

connect <ROOT URI> --verbose

For example:

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

Beschikbare eindpunten weergeven

Als u de verschillende eindpunten (controllers) wilt weergeven op het huidige pad van het web-API-adres, voert u de ls of dir opdracht uit:

https://localhost:5001/> ls

De volgende uitvoerindeling wordt weergegeven:

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

https://localhost:5001/>

De voorgaande uitvoer geeft aan dat er twee controllers beschikbaar zijn: Fruits en People. Beide controllers ondersteunen parameterloze HTTP GET- en POST-bewerkingen.

Als u naar een specifieke controller navigeert, ziet u meer details. In de uitvoer van de volgende opdracht ziet u bijvoorbeeld dat de Fruits controller ook HTTP GET-, PUT- en DELETE-bewerkingen ondersteunt. Elk van deze bewerkingen verwacht een id parameter in de route:

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

https://localhost:5001/fruits>

U kunt ook de ui opdracht uitvoeren om de Swagger UI-pagina van de web-API in een browser te openen. For example:

https://localhost:5001/> ui

Als u naar een ander eindpunt in de web-API wilt navigeren, voert u de cd opdracht uit:

https://localhost:5001/> cd people

Het pad na de cd opdracht is niet hoofdlettergevoelig. De volgende uitvoerindeling wordt weergegeven:

/people    [get|post]

https://localhost:5001/people>

HttpRepl aanpassen

De standaardkleuren van HttpRepl kunnen worden aangepast. Daarnaast kan een standaardteksteditor worden gedefinieerd. De HttpRepl-voorkeuren blijven behouden gedurende de huidige sessie en worden in toekomstige sessies gehonoreerd. Zodra de voorkeuren zijn gewijzigd, worden de voorkeuren opgeslagen in het volgende bestand:

%HOME%/.httpreplprefs

Het .httpreplprefs-bestand wordt tijdens het opstarten geladen en wordt niet gecontroleerd op wijzigingen tijdens runtime. Handmatige wijzigingen in het bestand worden pas van kracht nadat het hulpprogramma opnieuw is opgestart.

De instellingen weergeven

Voer de opdracht pref get uit om de beschikbare instellingen te bekijken. For example:

https://localhost:5001/> pref get

Met de voorgaande opdracht worden de beschikbare sleutel-waardeparen weergegeven:

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

Kleurvoorkeuren instellen

Antwoordkleuring wordt momenteel alleen ondersteund voor JSON. Als u de standaardkleuring van het httpRepl-hulpprogramma wilt aanpassen, zoekt u de sleutel die overeenkomt met de kleur die moet worden gewijzigd. Zie de sectie Instellingen weergeven voor instructies over het vinden van de sleutels. U kunt bijvoorbeeld de sleutelwaarde van colors.json wijzigen van Green naar White als volgt:

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

Alleen de toegestane kleuren kunnen worden gebruikt. Volgende HTTP-aanvragen geven uitvoer weer met de nieuwe kleuring.

Wanneer specifieke kleurtoetsen niet zijn ingesteld, worden er meer algemene sleutels overwogen. Bekijk het volgende voorbeeld om dit terugvalgedrag te demonstreren:

  • Als er geen waarde is voor colors.json.name, wordt colors.json.string gebruikt.
  • Als er geen waarde is voor colors.json.string, wordt colors.json.literal gebruikt.
  • Als er geen waarde is voor colors.json.literal, wordt colors.json gebruikt.
  • Als colors.json er geen waarde is, wordt de standaardtekstkleur (AllowedColors.None) van de opdrachtshell gebruikt.

Grootte van inspringing instellen

Aanpassing van de grootte van antwoord inspringing wordt momenteel alleen ondersteund voor JSON. De standaardgrootte is twee spaties. For example:

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

Als u de standaardgrootte wilt wijzigen, stelt u de formatting.json.indentSize sleutel in. Als u bijvoorbeeld altijd vier spaties wilt gebruiken:

pref set formatting.json.indentSize 4

Volgende antwoorden respecteren de instelling van vier spaties:

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

De standaardteksteditor instellen

De HttpRepl heeft standaard geen teksteditor geconfigureerd voor gebruik. Als u web-API-methoden wilt testen waarvoor een HTTP-aanvraagbody is vereist, moet een standaardteksteditor worden ingesteld. Met het hulpprogramma HttpRepl wordt de geconfigureerde teksteditor gestart voor het opstellen van de hoofdtekst van de aanvraag. Voer de volgende opdracht uit om de gewenste teksteditor in te stellen als de standaardinstelling:

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

In de voorgaande opdracht <EXECUTABLE> is het volledige pad naar het uitvoerbare bestand van de teksteditor. Voer bijvoorbeeld de volgende opdracht uit om Visual Studio Code in te stellen als de standaardteksteditor:

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

Als u de standaardteksteditor met specifieke CLI-argumenten wilt starten, stelt u de editor.command.default.arguments sleutel in. Stel dat Visual Studio Code de standaardteksteditor is en dat u visual Studio Code altijd wilt openen in een nieuwe sessie, waarbij extensies zijn uitgeschakeld. Voer de volgende opdracht uit:

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

Tip

Als uw standaardeditor Visual Studio Code is, wilt u meestal het -w of --wait argument doorgeven om Ervoor te zorgen dat Visual Studio Code wacht totdat u het bestand sluit voordat u het retourneert.

Zoekpaden voor OpenAPI-beschrijving instellen

HttpRepl heeft standaard een set relatieve paden die worden gebruikt om de OpenAPI-beschrijving te vinden bij het uitvoeren van de connect opdracht zonder de --openapi optie. Deze relatieve paden worden gecombineerd met de hoofd- en basispaden die zijn opgegeven in de connect opdracht. De standaard relatieve paden zijn:

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

Als u een andere set zoekpaden in uw omgeving wilt gebruiken, stelt u de swagger.searchPaths voorkeur in. De waarde moet een lijst van relatieve paden zijn, gescheiden door pipe-tekens. For example:

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

In plaats van de standaardlijst helemaal te vervangen, kan de lijst ook worden gewijzigd door paden toe te voegen of te verwijderen.

Als u een of meer zoekpaden wilt toevoegen aan de standaardlijst, stelt u de swagger.addToSearchPaths voorkeur in. De waarde moet een lijst van relatieve paden zijn, gescheiden door pipe-tekens. For example:

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

Als u een of meer zoekpaden uit de standaardlijst wilt verwijderen, stelt u de swagger.addToSearchPaths voorkeur in. De waarde moet een lijst van relatieve paden zijn, gescheiden door pipe-tekens. For example:

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

HTTP GET-aanvragen testen

Synopsis

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

Arguments

PARAMETER

De routeparameter, indien van toepassing, die wordt verwacht door de bijbehorende actiemethode voor de controller.

Options

De volgende opties zijn beschikbaar voor de get opdracht:

  • -F|--no-formatting

    Een vlag waarvan de aanwezigheid http-antwoordopmaak onderdrukt.

  • -h|--header

    Hiermee stelt u een HTTP-aanvraagheader in. De volgende twee waardenotaties worden ondersteund:

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

    Hiermee geeft u een bestand op waarnaar de HOOFDtekst van het HTTP-antwoord moet worden geschreven. Bijvoorbeeld: --response:body "C:\response.json". Het bestand wordt gemaakt als het niet bestaat.

  • --response:headers

    Hiermee geeft u een bestand op waarnaar de HTTP-antwoordheaders moeten worden geschreven. Bijvoorbeeld: --response:headers "C:\response.txt". Het bestand wordt gemaakt als het niet bestaat.

  • -s|--streaming

    Een vlag waarvan de aanwezigheid het streamen van het HTTP-antwoord mogelijk maakt.

Example

Een HTTP GET-aanvraag uitgeven:

  1. Voer de get opdracht uit op een eindpunt dat dit ondersteunt:

    https://localhost:5001/people> get
    

    Met de voorgaande opdracht wordt de volgende uitvoerindeling weergegeven:

    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. Haal een specifieke record op door een parameter door te geven aan de get opdracht:

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

    Met de voorgaande opdracht wordt de volgende uitvoerindeling weergegeven:

    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-aanvragen testen

Synopsis

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

Arguments

PARAMETER

De routeparameter, indien van toepassing, die wordt verwacht door de bijbehorende actiemethode voor de controller.

Options

  • -F|--no-formatting

    Een vlag waarvan de aanwezigheid http-antwoordopmaak onderdrukt.

  • -h|--header

    Hiermee stelt u een HTTP-aanvraagheader in. De volgende twee waardenotaties worden ondersteund:

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

    Hiermee geeft u een bestand op waarnaar de HOOFDtekst van het HTTP-antwoord moet worden geschreven. Bijvoorbeeld: --response:body "C:\response.json". Het bestand wordt gemaakt als het niet bestaat.

  • --response:headers

    Hiermee geeft u een bestand op waarnaar de HTTP-antwoordheaders moeten worden geschreven. Bijvoorbeeld: --response:headers "C:\response.txt". Het bestand wordt gemaakt als het niet bestaat.

  • -s|--streaming

    Een vlag waarvan de aanwezigheid het streamen van het HTTP-antwoord mogelijk maakt.

  • -c|--content

    Biedt een inline HTTP-aanvraagbody. Bijvoorbeeld: -c "{\"id\":2,\"name\":\"Cherry\"}".

  • -f|--file

    Biedt een pad naar een bestand met de hoofdtekst van de HTTP-aanvraag. Bijvoorbeeld: -f "C:\request.json".

  • --no-body

    Geeft aan dat er geen HTTP-aanvraagbody nodig is.

Example

Een HTTP POST-aanvraag uitgeven:

  1. Voer de post opdracht uit op een eindpunt dat dit ondersteunt:

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

    In de voorgaande opdracht is de HTTP-aanvraagheader ingesteld om aan te geven dat de mediatype van de aanvraaginhoud JSON is. De standaardteksteditor opent een .tmp bestand met een JSON-sjabloon die de hoofdtekst van de HTTP-aanvraag vertegenwoordigt. For example:

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

    Tip

    Als u de standaardteksteditor wilt instellen, raadpleegt u de sectie Standaardteksteditor instellen .

  2. Wijzig de JSON-sjabloon om te voldoen aan modelvalidatievereisten:

    {
      "id": 0,
      "name": "Scott Addie"
    }
    
  3. Sla het .tmp bestand op en sluit de teksteditor. De volgende uitvoer is te zien in het opdrachtscherm.

    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-aanvragen testen

Synopsis

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

Arguments

PARAMETER

De routeparameter, indien van toepassing, die wordt verwacht door de bijbehorende actiemethode voor de controller.

Options

  • -F|--no-formatting

    Een vlag waarvan de aanwezigheid http-antwoordopmaak onderdrukt.

  • -h|--header

    Hiermee stelt u een HTTP-aanvraagheader in. De volgende twee waardenotaties worden ondersteund:

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

    Hiermee geeft u een bestand op waarnaar de HOOFDtekst van het HTTP-antwoord moet worden geschreven. Bijvoorbeeld: --response:body "C:\response.json". Het bestand wordt gemaakt als het niet bestaat.

  • --response:headers

    Hiermee geeft u een bestand op waarnaar de HTTP-antwoordheaders moeten worden geschreven. Bijvoorbeeld: --response:headers "C:\response.txt". Het bestand wordt gemaakt als het niet bestaat.

  • -s|--streaming

    Een vlag waarvan de aanwezigheid het streamen van het HTTP-antwoord mogelijk maakt.

  • -c|--content

    Biedt een inline HTTP-aanvraagbody. Bijvoorbeeld: -c "{\"id\":2,\"name\":\"Cherry\"}".

  • -f|--file

    Biedt een pad naar een bestand met de hoofdtekst van de HTTP-aanvraag. Bijvoorbeeld: -f "C:\request.json".

  • --no-body

    Geeft aan dat er geen HTTP-aanvraagbody nodig is.

Example

Een HTTP PUT-aanvraag uitgeven:

  1. Optioneel: voer de get opdracht uit om de gegevens weer te geven voordat u deze wijzigt:

    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. Voer de put opdracht uit op een eindpunt dat dit ondersteunt:

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

    In de voorgaande opdracht is de HTTP-aanvraagheader ingesteld om aan te geven dat de mediatype van de aanvraaginhoud JSON is. De standaardteksteditor opent een .tmp bestand met een JSON-sjabloon die de hoofdtekst van de HTTP-aanvraag vertegenwoordigt. For example:

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

    Tip

    Als u de standaardteksteditor wilt instellen, raadpleegt u de sectie Standaardteksteditor instellen .

  3. Wijzig de JSON-sjabloon om te voldoen aan modelvalidatievereisten:

    {
      "id": 2,
      "name": "Cherry"
    }
    
  4. Sla het .tmp bestand op en sluit de teksteditor. De volgende uitvoer is te zien in het opdrachtscherm.

    [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. Optioneel: geef een get opdracht om de wijzigingen te bekijken. Als u bijvoorbeeld "Cherry" in de teksteditor hebt getypt, levert get de volgende uitvoer op:

    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-aanvragen testen

Synopsis

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

Arguments

PARAMETER

De routeparameter, indien van toepassing, die wordt verwacht door de bijbehorende actiemethode voor de controller.

Options

  • -F|--no-formatting

    Een vlag waarvan de aanwezigheid http-antwoordopmaak onderdrukt.

  • -h|--header

    Hiermee stelt u een HTTP-aanvraagheader in. De volgende twee waardenotaties worden ondersteund:

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

    Hiermee geeft u een bestand op waarnaar de HOOFDtekst van het HTTP-antwoord moet worden geschreven. Bijvoorbeeld: --response:body "C:\response.json". Het bestand wordt gemaakt als het niet bestaat.

  • --response:headers

    Hiermee geeft u een bestand op waarnaar de HTTP-antwoordheaders moeten worden geschreven. Bijvoorbeeld: --response:headers "C:\response.txt". Het bestand wordt gemaakt als het niet bestaat.

  • -s|--streaming

    Een vlag waarvan de aanwezigheid het streamen van het HTTP-antwoord mogelijk maakt.

Example

Een HTTP DELETE-aanvraag uitgeven:

  1. Optioneel: voer de get opdracht uit om de gegevens weer te geven voordat u deze wijzigt:

    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. Voer de delete opdracht uit op een eindpunt dat dit ondersteunt:

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

    Met de voorgaande opdracht wordt de volgende uitvoerindeling weergegeven:

    HTTP/1.1 204 No Content
    Date: Fri, 28 Jun 2019 17:36:42 GMT
    Server: Kestrel
    
  3. Optioneel: geef een get opdracht om de wijzigingen te bekijken. In dit voorbeeld geeft een get de volgende uitvoer:

    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-aanvragen testen

Synopsis

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

Arguments

PARAMETER

De routeparameter, indien van toepassing, die wordt verwacht door de bijbehorende actiemethode voor de controller.

Options

  • -F|--no-formatting

    Een vlag waarvan de aanwezigheid http-antwoordopmaak onderdrukt.

  • -h|--header

    Hiermee stelt u een HTTP-aanvraagheader in. De volgende twee waardenotaties worden ondersteund:

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

    Hiermee geeft u een bestand op waarnaar de HOOFDtekst van het HTTP-antwoord moet worden geschreven. Bijvoorbeeld: --response:body "C:\response.json". Het bestand wordt gemaakt als het niet bestaat.

  • --response:headers

    Hiermee geeft u een bestand op waarnaar de HTTP-antwoordheaders moeten worden geschreven. Bijvoorbeeld: --response:headers "C:\response.txt". Het bestand wordt gemaakt als het niet bestaat.

  • -s|--streaming

    Een vlag waarvan de aanwezigheid het streamen van het HTTP-antwoord mogelijk maakt.

  • -c|--content

    Biedt een inline HTTP-aanvraagbody. Bijvoorbeeld: -c "{\"id\":2,\"name\":\"Cherry\"}".

  • -f|--file

    Biedt een pad naar een bestand met de hoofdtekst van de HTTP-aanvraag. Bijvoorbeeld: -f "C:\request.json".

  • --no-body

    Geeft aan dat er geen HTTP-aanvraagbody nodig is.

HTTP HEAD-aanvragen testen

Synopsis

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

Arguments

PARAMETER

De routeparameter, indien van toepassing, die wordt verwacht door de bijbehorende actiemethode voor de controller.

Options

  • -F|--no-formatting

    Een vlag waarvan de aanwezigheid http-antwoordopmaak onderdrukt.

  • -h|--header

    Hiermee stelt u een HTTP-aanvraagheader in. De volgende twee waardenotaties worden ondersteund:

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

    Hiermee geeft u een bestand op waarnaar de HOOFDtekst van het HTTP-antwoord moet worden geschreven. Bijvoorbeeld: --response:body "C:\response.json". Het bestand wordt gemaakt als het niet bestaat.

  • --response:headers

    Hiermee geeft u een bestand op waarnaar de HTTP-antwoordheaders moeten worden geschreven. Bijvoorbeeld: --response:headers "C:\response.txt". Het bestand wordt gemaakt als het niet bestaat.

  • -s|--streaming

    Een vlag waarvan de aanwezigheid het streamen van het HTTP-antwoord mogelijk maakt.

HTTP OPTIONS-aanvragen testen

Synopsis

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

Arguments

PARAMETER

De routeparameter, indien van toepassing, die wordt verwacht door de bijbehorende actiemethode voor de controller.

Options

  • -F|--no-formatting

    Een vlag waarvan de aanwezigheid http-antwoordopmaak onderdrukt.

  • -h|--header

    Hiermee stelt u een HTTP-aanvraagheader in. De volgende twee waardenotaties worden ondersteund:

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

    Hiermee geeft u een bestand op waarnaar de HOOFDtekst van het HTTP-antwoord moet worden geschreven. Bijvoorbeeld: --response:body "C:\response.json". Het bestand wordt gemaakt als het niet bestaat.

  • --response:headers

    Hiermee geeft u een bestand op waarnaar de HTTP-antwoordheaders moeten worden geschreven. Bijvoorbeeld: --response:headers "C:\response.txt". Het bestand wordt gemaakt als het niet bestaat.

  • -s|--streaming

    Een vlag waarvan de aanwezigheid het streamen van het HTTP-antwoord mogelijk maakt.

HTTP-aanvraagheaders instellen

Als u een HTTP-aanvraagheader wilt instellen, gebruikt u een van de volgende methoden:

  • Stel inline in met de HTTP-aanvraag. For example:

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

    Bij de voorgaande benadering is voor elke afzonderlijke HTTP-aanvraagheader een eigen -h optie vereist.

  • Stel deze in voordat de HTTP-aanvraag wordt verzonden. For example:

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

    Wanneer u de header instelt voordat een aanvraag wordt verzonden, blijft de header ingesteld voor de duur van de opdrachtshellsessie. Als u de koptekst wilt wissen, geeft u een lege waarde op. For example:

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

Beveiligde eindpunten testen

HttpRepl ondersteunt het testen van beveiligde eindpunten op de volgende manieren:

  • Via de standaardgegevens van de ingelogde gebruiker.
  • Via het gebruik van HTTP-aanvraagheaders.

Default credentials

Overweeg een web-API die u test die wordt gehost in IIS en beveiligd met Windows-verificatie. U wilt dat de referenties van de gebruiker die het hulpprogramma uitvoert, naar de HTTP-eindpunten stromen die worden getest. De standaardreferenties van de aangemelde gebruiker doorgeven:

  1. Stel de httpClient.useDefaultCredentials voorkeur in op true:

    pref set httpClient.useDefaultCredentials true
    
  2. Sluit het hulpprogramma af en start het opnieuw voordat u een andere aanvraag naar de web-API verzendt.

Standaardproxy-aanmeldgegevens

Overweeg een scenario waarin de web-API die u test zich achter een proxy bevindt die is beveiligd met Windows-verificatie. U wilt dat de referenties van de gebruiker die het hulpprogramma uitvoert, naar de proxy stromen. De standaardreferenties van de aangemelde gebruiker doorgeven:

  1. Stel de httpClient.proxy.useDefaultCredentials voorkeur in op true:

    pref set httpClient.proxy.useDefaultCredentials true
    
  2. Sluit het hulpprogramma af en start het opnieuw voordat u een andere aanvraag naar de web-API verzendt.

HTTP-aanvraagheaders

Voorbeelden van ondersteunde verificatie- en autorisatieschema's zijn:

  • basic authentication
  • JWT Bearer-tokens
  • digest authentication

U kunt bijvoorbeeld een Bearer-token verzenden naar een eindpunt met de volgende opdracht:

set header Authorization "bearer <TOKEN VALUE>"

Als u toegang wilt krijgen tot een door Azure gehost eindpunt of de Azure-API RESTwilt gebruiken, hebt u een bearer-token nodig. Gebruik de volgende stappen om een Bearer-token voor uw Azure-abonnement te verkrijgen via de Azure CLI. De HttpRepl stelt het bearer-token in een HTTP-aanvraagheader in. Er wordt een lijst met Azure App Service-web-apps opgehaald.

  1. Meld u aan bij Azure:

    az login
    
  2. Haal uw abonnements-id op met de volgende opdracht:

    az account show --query id
    
  3. Kopieer uw abonnements-id en voer de volgende opdracht uit:

    az account set --subscription "<SUBSCRIPTION ID>"
    
  4. Haal uw Bearer-token op met de volgende opdracht:

    az account get-access-token --query accessToken
    
  5. Maak verbinding met de Azure-API REST via httpRepl:

    httprepl https://management.azure.com
    
  6. Stel de Authorization HTTP-aanvraagheader in:

    https://management.azure.com/> set header Authorization "bearer <ACCESS TOKEN>"
    
  7. Ga naar het abonnement:

    https://management.azure.com/> cd subscriptions/<SUBSCRIPTION ID>
    
  8. Haal een lijst op met de Azure App Service-web-apps van uw abonnement:

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

    Het volgende antwoord wordt weergegeven:

    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-aanvraagweergave in-/uitschakelen

Standaard wordt de weergave van de VERZONDen HTTP-aanvraag onderdrukt. Het is mogelijk om de bijbehorende instelling te wijzigen voor de duur van de commandoshellsessie.

Weergave van aanvraag inschakelen

Bekijk de HTTP-aanvraag die wordt verzonden door de opdracht uit te echo on voeren. For example:

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

Volgende HTTP-aanvragen in de huidige sessie geven de aanvraagheaders weer. For example:

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>

Weergave van aanvraag uitschakelen

Onderdrukt de weergave van de HTTP-aanvraag die wordt verzonden door de opdracht uit te echo off voeren. For example:

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

Een script uitvoeren

Als u vaak dezelfde set HttpRepl-opdrachten uitvoert, kunt u overwegen deze op te slaan in een tekstbestand. Opdrachten in het bestand hebben dezelfde vorm als opdrachten die handmatig op de commandoregel worden uitgevoerd. De opdrachten kunnen op batchgewijze wijze worden uitgevoerd met behulp van de run opdracht. For example:

  1. Maak een tekstbestand met een set door nieuwe regels gescheiden opdrachten. Ter illustratie kunt u een people-script.txt-bestand met de volgende opdrachten overwegen:

    set base https://localhost:5001
    ls
    cd People
    ls
    get 1
    
  2. Voer de run opdracht uit en geef het pad van het tekstbestand door. For example:

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

    De volgende uitvoer wordt weergegeven:

    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>
    

De uitvoer wissen

Als u alle uitvoer wilt verwijderen die naar de opdrachtshell is geschreven door het hulpprogramma HttpRepl, voert u de opdracht of clear de cls opdracht uit. Ter illustratie, stelt u zich voor dat de opdrachtshell de volgende uitvoer bevat:

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

Voer de volgende opdracht uit om de uitvoer te wissen:

https://localhost:5001/> clear

Nadat u de voorgaande opdracht hebt uitgevoerd, bevat de opdrachtshell alleen de volgende uitvoer:

https://localhost:5001/>

Additional resources