Dela via


Testa webb-API:er med HttpRepl

HTTP Read-Eval-Print Loop (REPL) är:

  • Ett lätt, plattformsoberoende kommandoradsverktyg som stöds överallt där .NET stöds.
  • Används för att göra HTTP-begäranden för att testa ASP.NET Core-webb-API:er (och non-ASP.NET Core-webb-API:er) och visa deras resultat.
  • Kan testa webb-API:er som finns i alla miljöer, inklusive localhost och Azure App Service.

Följande HTTP-verb stöds:

Om du vill följa med kan du visa eller ladda ned exempel-ASP.NET Core-webb-API (så här laddar du ned).

Prerequisites

Installation

Installera HttpRepl genom att köra följande kommando:

dotnet tool install -g Microsoft.dotnet-httprepl

Ett .NET Global Tool installeras från NuGet-paketet Microsoft.dotnet-httprepl.

Note

Som standard representerar arkitekturen för de .NET-binärfiler som ska installeras den operativsystemarkitektur som körs. Information om hur du anger en annan operativsystemarkitektur finns i dotnet tool install, --arch option. Mer information finns i GitHub-problem dotnet/AspNetCore.Docs #29262.

Uppdatera sökvägen i macOS:

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

Usage

När installationen av verktyget har slutförts kör du följande kommando för att starta HttpRepl:

httprepl

Om du vill visa tillgängliga HttpRepl-kommandon kör du något av följande kommandon:

httprepl -h
httprepl --help

Följande utdata visas:

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 erbjuder kommandokomplettering. Tryck på Tabb för att gå igenom listan med kommandon som kompletterar de tecken eller den API-slutpunkt du skrev. I följande avsnitt beskrivs tillgängliga CLI-kommandon.

Ansluta till webb-API:et

Anslut till ett webb-API genom att köra följande kommando:

httprepl <ROOT URI>

<ROOT URI> är bas-URI:n för webb-API:et. Till exempel:

httprepl https://localhost:5001

Du kan också köra följande kommando när som helst medan HttpRepl körs:

connect <ROOT URI>

Till exempel:

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

Peka manuellt på OpenAPI-beskrivningen för webb-API:et

Kommandot connect ovan försöker hitta OpenAPI-beskrivningen automatiskt. Om det av någon anledning inte går att göra det kan du ange URI:n för OpenAPI-beskrivningen för webb-API:et --openapi med hjälp av alternativet:

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

Till exempel:

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

Aktivera utförliga utdata för information om sökning, parsning och validering av OpenAPI-beskrivning

Om du anger --verbose alternativet med connect kommandot får du mer information när verktyget söker efter OpenAPI-beskrivningen, parsar och validerar den.

connect <ROOT URI> --verbose

Till exempel:

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

Visa tillgängliga slutpunkter

Om du vill lista de olika slutpunkterna (kontrollanterna) på den aktuella sökvägen till webb-API-adressen, kör du kommandot ls eller dir:

https://localhost:5001/> ls

Följande utdataformat visas:

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

https://localhost:5001/>

Föregående utdata anger att det finns två tillgängliga styrenheter: Fruits och People. Båda kontrollanterna stöder parameterlösa HTTP GET- och POST-åtgärder.

Om du navigerar till en specifik kontrollant visas mer information. Följande kommandos utdata visar till exempel att kontrollanten Fruits även stöder HTTP GET-, PUT- och DELETE-åtgärder. Var och en av dessa åtgärder förväntar sig en id parameter i vägen:

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

https://localhost:5001/fruits>

Du kan också köra ui kommandot för att öppna webb-API:ets Swagger-användargränssnittssida i en webbläsare. Till exempel:

https://localhost:5001/> ui

Om du vill navigera till en annan slutpunkt i webb-API:et cd kör du kommandot:

https://localhost:5001/> cd people

Sökvägen efter cd kommandot är skiftlägesokänslig. Följande utdataformat visas:

/people    [get|post]

https://localhost:5001/people>

Anpassa HttpReplen

HttpRepls standardfärger kan anpassas. Dessutom kan en standardtextredigerare definieras. HttpRepl-inställningarna sparas under den aktuella sessionen och respekteras i framtida sessioner. När inställningarna har ändrats lagras de i följande fil:

%HOME%/.httpreplprefs

.httpreplprefs-filen läses in vid start och övervakas inte för ändringar vid körning. Manuella ändringar av filen börjar gälla först efter att verktyget har startats om.

Visa inställningarna

Kör kommandot pref get för att visa de tillgängliga inställningarna. Till exempel:

https://localhost:5001/> pref get

Föregående kommando visar de tillgängliga nyckel/värde-paren:

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

Ange färginställningar

Svarsfärgning stöds för närvarande endast för JSON. Om du vill anpassa standardfärgen för HttpRepl-verktyget letar du upp nyckeln som motsvarar den färg som ska ändras. Anvisningar om hur du hittar nycklarna finns i avsnittet Visa inställningar . Du kan till exempel ändra colors.json nyckelvärdet från Green till White följande:

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

Endast de tillåtna färgerna får användas. Efterföljande HTTP-begäranden visar utdata med den nya färgen.

När specifika färgnycklar inte har angetts beaktas mer allmänna nycklar. Tänk på följande exempel för att demonstrera det här reservbeteendet:

  • Om colors.json.name inte har något värde colors.json.string används.
  • Om colors.json.string inte har något värde colors.json.literal används.
  • Om colors.json.literal inte har något värde colors.json används.
  • Om colors.json inte har något värde används kommandogränssnittets standardtextfärg (AllowedColors.None).

Ange indragsstorlek

Anpassning av svars indragsstorlek stöds för närvarande endast för JSON. Standardstorleken är två blanksteg. Till exempel:

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

För att ändra standardstorlek, ställ in formatting.json.indentSize-nyckeln. Om du till exempel alltid vill använda fyra blanksteg:

pref set formatting.json.indentSize 4

Efterföljande svar respekterar inställningen för fyra blanksteg:

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

Ange standardtextredigeraren

Som standard har HttpRepl ingen textredigerare konfigurerad för användning. Om du vill testa webb-API-metoder som kräver en HTTP-begärandetext måste du ange en standardtextredigerare. Verktyget HttpRepl startar den konfigurerade textredigeraren enbart i syfte att skapa begärandetexten. Kör följande kommando för att ange önskad textredigerare som standard:

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

I föregående kommando <EXECUTABLE> är den fullständiga sökvägen till textredigerarens körbara fil. Kör till exempel följande kommando för att ange Visual Studio Code som standardtextredigerare:

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

Om du vill starta standardtextredigeraren med specifika CLI-argument anger du editor.command.default.arguments nyckeln. Anta till exempel att Visual Studio Code är standardtextredigeraren och att du alltid vill att HttpRepl ska öppna Visual Studio Code i en ny session med tillägg inaktiverade. Kör följande kommando:

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

Tip

Om standardredigeraren är Visual Studio Code vill du vanligtvis skicka -w argumentet eller --wait för att tvinga Visual Studio Code att vänta tills du stänger filen innan du återvänder.

Ange sökvägarna för OpenAPI-beskrivning

Som standard har HttpRepl en uppsättning relativa sökvägar som används för att hitta OpenAPI-beskrivningen connect när kommandot körs utan alternativet --openapi . Dessa relativa sökvägar kombineras med de rot- och bassökvägar som anges i connect kommandot . De relativa standardsökvägarna är:

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

Om du vill använda en annan uppsättning sökvägar i din miljö anger du swagger.searchPaths inställningen. Värdet måste vara en lista med relativa sökvägar avgränsade med pipe-tecken. Till exempel:

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

I stället för att ersätta standardlistan helt och hållet kan listan också ändras genom att lägga till eller ta bort sökvägar.

Om du vill lägga till en eller flera sökvägar i standardlistan anger du swagger.addToSearchPaths inställningen. Värdet måste vara en lista med relativa sökvägar avgränsade med pipe-tecken. Till exempel:

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

Om du vill ta bort en eller flera sökvägar från standardlistan anger du swagger.addToSearchPaths inställningen. Värdet måste vara en lista med relativa sökvägar avgränsade med pipe-tecken. Till exempel:

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

Testa HTTP GET-begäranden

Synopsis

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

Arguments

PARAMETER

Routningsparametern, om någon, förväntas av den associerade kontrollerns åtgärdsmetod.

Options

Följande alternativ är tillgängliga för get kommandot:

  • -F|--no-formatting

    En flagga vars närvaro undertrycker HTTP-svarsformatering.

  • -h|--header

    Anger ett HTTP-begärandehuvud. Följande två värdeformat stöds:

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

    Anger en fil som HTTP-svarstexten ska skrivas till. Till exempel --response:body "C:\response.json". Filen skapas om den inte finns.

  • --response:headers

    Anger en fil som HTTP-svarshuvudena ska skrivas till. Till exempel --response:headers "C:\response.txt". Filen skapas om den inte finns.

  • -s|--streaming

    En flagga vars närvaro möjliggör strömning av HTTP-svaret.

Example

Så här utfärdar du en HTTP GET-begäran:

  1. get Kör kommandot på en slutpunkt som stöder det:

    https://localhost:5001/people> get
    

    Föregående kommando visar följande utdataformat:

    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. Hämta en specifik post genom att skicka en parameter till kommandot get.

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

    Föregående kommando visar följande utdataformat:

    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>
    

Testa HTTP POST-begäranden

Synopsis

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

Arguments

PARAMETER

Routningsparametern, om någon, förväntas av den associerade kontrollerns åtgärdsmetod.

Options

  • -F|--no-formatting

    En flagga vars närvaro undertrycker HTTP-svarsformatering.

  • -h|--header

    Anger ett HTTP-begärandehuvud. Följande två värdeformat stöds:

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

    Anger en fil som HTTP-svarstexten ska skrivas till. Till exempel --response:body "C:\response.json". Filen skapas om den inte finns.

  • --response:headers

    Anger en fil som HTTP-svarshuvudena ska skrivas till. Till exempel --response:headers "C:\response.txt". Filen skapas om den inte finns.

  • -s|--streaming

    En flagga vars närvaro möjliggör strömning av HTTP-svaret.

  • -c|--content

    Innehåller en infogad HTTP-begärandetext. Till exempel -c "{\"id\":2,\"name\":\"Cherry\"}".

  • -f|--file

    Tillhandahåller en sökväg till en fil som innehåller HTTP-begärandetexten. Till exempel -f "C:\request.json".

  • --no-body

    Anger att ingen HTTP-begärandetext behövs.

Example

Så här utfärdar du en HTTP POST-begäran:

  1. post Kör kommandot på en slutpunkt som stöder det:

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

    I föregående kommando Content-Type anges HTTP-begärandehuvudet för att ange en typ av begärandetextmedium för JSON. Standardtextredigeraren öppnar en .tmp fil med en JSON-mall som representerar HTTP-begärandetexten. Till exempel:

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

    Tip

    Om du vill ange standardtextredigeraren läser du avsnittet Ange standardtextredigeraren .

  2. Ändra JSON-mallen så att den uppfyller kraven för modellverifiering:

    {
      "id": 0,
      "name": "Scott Addie"
    }
    
  3. Spara .tmp-filen och stäng textredigeraren. Följande utdata visas i kommandogränssnittet:

    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>
    

Testa HTTP PUT-förfrågningar

Synopsis

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

Arguments

PARAMETER

Routningsparametern, om någon, förväntas av den associerade kontrollerns åtgärdsmetod.

Options

  • -F|--no-formatting

    En flagga vars närvaro undertrycker HTTP-svarsformatering.

  • -h|--header

    Anger ett HTTP-begärandehuvud. Följande två värdeformat stöds:

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

    Anger en fil som HTTP-svarstexten ska skrivas till. Till exempel --response:body "C:\response.json". Filen skapas om den inte finns.

  • --response:headers

    Anger en fil som HTTP-svarshuvudena ska skrivas till. Till exempel --response:headers "C:\response.txt". Filen skapas om den inte finns.

  • -s|--streaming

    En flagga vars närvaro möjliggör strömning av HTTP-svaret.

  • -c|--content

    Innehåller en infogad HTTP-begärandetext. Till exempel -c "{\"id\":2,\"name\":\"Cherry\"}".

  • -f|--file

    Tillhandahåller en sökväg till en fil som innehåller HTTP-begärandetexten. Till exempel -f "C:\request.json".

  • --no-body

    Anger att ingen HTTP-begärandetext behövs.

Example

Så här utfärdar du en HTTP PUT-begäran:

  1. Valfritt: Kör get kommandot för att visa data innan du ändrar dem:

    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. put Kör kommandot på en slutpunkt som stöder det:

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

    I föregående kommando Content-Type anges HTTP-begärandehuvudet för att ange en typ av begärandetextmedium för JSON. Standardtextredigeraren öppnar en .tmp fil med en JSON-mall som representerar HTTP-begärandetexten. Till exempel:

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

    Tip

    Om du vill ange standardtextredigeraren läser du avsnittet Ange standardtextredigeraren .

  3. Ändra JSON-mallen så att den uppfyller kraven för modellverifiering:

    {
      "id": 2,
      "name": "Cherry"
    }
    
  4. Spara .tmp-filen och stäng textredigeraren. Följande utdata visas i kommandogränssnittet:

    [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. Valfritt: Utfärda ett get kommando för att se ändringarna. Om du till exempel skrev "Cherry" i textredigeraren returnerar en get följande utdata:

    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>
    

Testa HTTP DELETE begäranden

Synopsis

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

Arguments

PARAMETER

Routningsparametern, om någon, förväntas av den associerade kontrollerns åtgärdsmetod.

Options

  • -F|--no-formatting

    En flagga vars närvaro undertrycker HTTP-svarsformatering.

  • -h|--header

    Anger ett HTTP-begärandehuvud. Följande två värdeformat stöds:

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

    Anger en fil som HTTP-svarstexten ska skrivas till. Till exempel --response:body "C:\response.json". Filen skapas om den inte finns.

  • --response:headers

    Anger en fil som HTTP-svarshuvudena ska skrivas till. Till exempel --response:headers "C:\response.txt". Filen skapas om den inte finns.

  • -s|--streaming

    En flagga vars närvaro möjliggör strömning av HTTP-svaret.

Example

Så här utfärdar du en HTTP DELETE-begäran:

  1. Valfritt: Kör get kommandot för att visa data innan du ändrar dem:

    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. delete Kör kommandot på en slutpunkt som stöder det:

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

    Föregående kommando visar följande utdataformat:

    HTTP/1.1 204 No Content
    Date: Fri, 28 Jun 2019 17:36:42 GMT
    Server: Kestrel
    
  3. Valfritt: Utfärda ett get kommando för att se ändringarna. I det här exemplet returnerar en get följande utdata:

    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>
    

Testa HTTP PATCH-förfrågningar

Synopsis

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

Arguments

PARAMETER

Routningsparametern, om någon, förväntas av den associerade kontrollerns åtgärdsmetod.

Options

  • -F|--no-formatting

    En flagga vars närvaro undertrycker HTTP-svarsformatering.

  • -h|--header

    Anger ett HTTP-begärandehuvud. Följande två värdeformat stöds:

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

    Anger en fil som HTTP-svarstexten ska skrivas till. Till exempel --response:body "C:\response.json". Filen skapas om den inte finns.

  • --response:headers

    Anger en fil som HTTP-svarshuvudena ska skrivas till. Till exempel --response:headers "C:\response.txt". Filen skapas om den inte finns.

  • -s|--streaming

    En flagga vars närvaro möjliggör strömning av HTTP-svaret.

  • -c|--content

    Innehåller en infogad HTTP-begärandetext. Till exempel -c "{\"id\":2,\"name\":\"Cherry\"}".

  • -f|--file

    Tillhandahåller en sökväg till en fil som innehåller HTTP-begärandetexten. Till exempel -f "C:\request.json".

  • --no-body

    Anger att ingen HTTP-begärandetext behövs.

Testa HTTP HEAD-förfrågningar

Synopsis

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

Arguments

PARAMETER

Routningsparametern, om någon, förväntas av den associerade kontrollerns åtgärdsmetod.

Options

  • -F|--no-formatting

    En flagga vars närvaro undertrycker HTTP-svarsformatering.

  • -h|--header

    Anger ett HTTP-begärandehuvud. Följande två värdeformat stöds:

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

    Anger en fil som HTTP-svarstexten ska skrivas till. Till exempel --response:body "C:\response.json". Filen skapas om den inte finns.

  • --response:headers

    Anger en fil som HTTP-svarshuvudena ska skrivas till. Till exempel --response:headers "C:\response.txt". Filen skapas om den inte finns.

  • -s|--streaming

    En flagga vars närvaro möjliggör strömning av HTTP-svaret.

Testa HTTP-ALTERNATIV-begäranden

Synopsis

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

Arguments

PARAMETER

Routningsparametern, om någon, förväntas av den associerade kontrollerns åtgärdsmetod.

Options

  • -F|--no-formatting

    En flagga vars närvaro undertrycker HTTP-svarsformatering.

  • -h|--header

    Anger ett HTTP-begärandehuvud. Följande två värdeformat stöds:

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

    Anger en fil som HTTP-svarstexten ska skrivas till. Till exempel --response:body "C:\response.json". Filen skapas om den inte finns.

  • --response:headers

    Anger en fil som HTTP-svarshuvudena ska skrivas till. Till exempel --response:headers "C:\response.txt". Filen skapas om den inte finns.

  • -s|--streaming

    En flagga vars närvaro möjliggör strömning av HTTP-svaret.

Ange HTTP-begärandehuvuden

Om du vill ange ett HTTP-begärandehuvud använder du någon av följande metoder:

  • Ange i linje med HTTP-begäran. Till exempel:

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

    Med föregående metod kräver varje distinkt HTTP-begärandehuvud sitt eget -h alternativ.

  • Ange innan HTTP-begäran skickas. Till exempel:

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

    När du ställer in rubriken innan du skickar en begäran förblir rubriken inställd under kommandogränssnittssessionen. Om du vill rensa rubriken anger du ett tomt värde. Till exempel:

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

Testa skyddade slutpunkter

HttpRepl stöder testning av skyddade slutpunkter på följande sätt:

  • Via standardautentiseringsuppgifterna för den inloggade användaren.
  • Med hjälp av HTTP-begärandehuvuden.

Standardautentiseringsuppgifter

Överväg ett webb-API som du testar som finns i IIS och skyddas med Windows-autentisering. Du vill att autentiseringsuppgifterna för användaren som kör verktyget ska flöda över till DE HTTP-slutpunkter som testas. Så här skickar du standardautentiseringsuppgifterna för den inloggade användaren:

  1. httpClient.useDefaultCredentials Ange inställningen till true:

    pref set httpClient.useDefaultCredentials true
    
  2. Avsluta och starta om verktyget innan du skickar en annan begäran till webb-API:et.

Standardautentiseringsuppgifter för proxy

Tänk dig ett scenario där webb-API:et som du testar ligger bakom en proxy som skyddas med Windows-autentisering. Du vill att autentiseringsuppgifterna för den användare som kör verktyget ska flöda till proxyn. Så här skickar du standardautentiseringsuppgifterna för den inloggade användaren:

  1. httpClient.proxy.useDefaultCredentials Ange inställningen till true:

    pref set httpClient.proxy.useDefaultCredentials true
    
  2. Avsluta och starta om verktyget innan du skickar en annan begäran till webb-API:et.

HTTP-förfrågningshuvuden

Exempel på autentiserings- och auktoriseringsscheman som stöds är:

  • grundläggande autentisering
  • JWT-bärartoken
  • digest-autentisering

Du kan till exempel skicka en ägartoken till en slutpunkt med följande kommando:

set header Authorization "bearer <TOKEN VALUE>"

För att få åtkomst till en Azure-värdbaserad slutpunkt eller för att använda Azure-APIREST:et behöver du en bärartoken. Använd följande steg för att hämta en ägartoken för din Azure-prenumeration via Azure CLI. HttpRepl anger ägartoken i ett HTTP-begärandehuvud. En lista över Azure App Service Web Apps hämtas.

  1. Logga in på Azure:

    az login
    
  2. Hämta ditt prenumerations-ID med följande kommando:

    az account show --query id
    
  3. Kopiera ditt prenumerations-ID och kör följande kommando:

    az account set --subscription "<SUBSCRIPTION ID>"
    
  4. Hämta din bärartoken med följande kommando:

    az account get-access-token --query accessToken
    
  5. Anslut till Azure-API REST :et via HttpRepl:

    httprepl https://management.azure.com
    
  6. Authorization Ange HTTP-begärandehuvudet:

    https://management.azure.com/> set header Authorization "bearer <ACCESS TOKEN>"
    
  7. Gå till prenumerationen:

    https://management.azure.com/> cd subscriptions/<SUBSCRIPTION ID>
    
  8. Hämta en lista över din prenumerations Azure App Service Web Apps:

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

    Följande svar visas:

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

Växla visning av HTTP-begäran

Som standard ignoreras visningen av HTTP-begäran som skickas. Det går att ändra motsvarande inställning under hela kommandogränssnittssessionen.

Aktivera visning av begäran

Visa HTTP-begäran som skickas genom att köra echo on kommandot. Till exempel:

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

Efterföljande HTTP-begäranden i den aktuella sessionen visar begärandehuvudena. Till exempel:

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>

Inaktivera visning av begäran

Ignorera visningen av HTTP-begäran som skickas genom att köra echo off kommandot. Till exempel:

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

Kör ett skript

Om du ofta kör samma uppsättning HttpRepl-kommandon bör du överväga att lagra dem i en textfil. Kommandon i filen har samma formulär som kommandon som körs manuellt på kommandoraden. Kommandona kan köras i batch med kommandot run . Till exempel:

  1. Skapa en textfil som innehåller en uppsättning newline-avgränsade kommandon. För att illustrera bör du överväga en people-script.txt fil som innehåller följande kommandon:

    set base https://localhost:5001
    ls
    cd People
    ls
    get 1
    
  2. Kör kommandot run och ange textfilens sökväg. Till exempel:

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

    Följande utdata visas:

    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>
    

Rensa utdata

Om du vill ta bort alla utdata som skrivits till kommandogränssnittet av verktyget HttpRepl, kör kommandot clear eller cls. Tänk dig att kommandogränssnittet innehåller följande utdata för att illustrera:

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

Kör följande kommando för att rensa utdata:

https://localhost:5001/> clear

När du har kört föregående kommando innehåller kommandogränssnittet endast följande utdata:

https://localhost:5001/>

Ytterligare resurser