Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
O HTTP Read-Eval-Print Loop (REPL) é:
- Uma ferramenta de linha de comando leve e multiplataforma que é suportada em todos os lugares em que o .NET é suportado.
- Usado para fazer solicitações HTTP para testar APIs da Web ASP.NET Core (e APIs da Web non-ASP.NET Core) e exibir seus resultados.
- Capaz de testar APIs Web hospedadas em qualquer ambiente, incluindo localhost e Serviço de Aplicativo do Azure.
Os seguintes verbos HTTP são suportados:
Para acompanhar, visualize ou baixe o exemplo ASP.NET API Web Core (como fazer o download).
Prerequisites
Installation
Para instalar o HttpRepl, execute o seguinte comando:
dotnet tool install -g Microsoft.dotnet-httprepl
Uma ferramenta global do .NET é instalada a partir do pacote NuGet Microsoft.dotnet-httprepl .
Note
Por padrão, a arquitetura dos binários do .NET a serem instalados representa a arquitetura do sistema operacional em execução no momento. Para especificar uma arquitetura de sistema operativo diferente, consulte dotnet tool install, opção --arch. Para obter mais informações, consulte o issue do GitHub dotnet/AspNetCore.Docs #29262.
No macOS, atualize o caminho:
export PATH="$HOME/.dotnet/tools:$PATH"
Usage
Após a instalação bem-sucedida da ferramenta, execute o seguinte comando para iniciar o HttpRepl:
httprepl
Para exibir os comandos HttpRepl disponíveis, execute um dos seguintes comandos:
httprepl -h
httprepl --help
A seguinte saída é exibida:
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.
O HttpRepl oferece conclusão de comando. Pressionar a tecla Tab percorre a lista de comandos que completam os caracteres ou o endpoint da API que introduziste. As seções a seguir descrevem os comandos disponíveis da CLI.
Conectar-se à API da Web
Conecte-se a uma API da Web executando o seguinte comando:
httprepl <ROOT URI>
<ROOT URI> é o URI base para a API da Web. Por exemplo:
httprepl https://localhost:5001
Como alternativa, execute o seguinte comando a qualquer momento enquanto o HttpRepl estiver em execução:
connect <ROOT URI>
Por exemplo:
(Disconnected)> connect https://localhost:5001
Aponte manualmente para a descrição da OpenAPI para a API da Web
O comando connect acima tentará encontrar a descrição da OpenAPI automaticamente. Se, por algum motivo, não for possível fazer isso, você pode especificar o URI da descrição da OpenAPI para a API da Web usando a --openapi opção:
connect <ROOT URI> --openapi <OPENAPI DESCRIPTION ADDRESS>
Por exemplo:
(Disconnected)> connect https://localhost:5001 --openapi /swagger/v1/swagger.json
Habilite a saída detalhada para obter detalhes sobre a pesquisa, análise e validação de descrições da OpenAPI
Especificar a --verbose opção com o connect comando produzirá mais detalhes quando a ferramenta procurar a descrição da OpenAPI, analisá-la e validá-la.
connect <ROOT URI> --verbose
Por exemplo:
(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]
Navegar na API da Web
Ver pontos finais disponíveis
Para listar os diferentes pontos de extremidade (controladores) no caminho atual do endereço da API da Web, execute o comando ls ou dir:
https://localhost:5001/> ls
O seguinte formato de saída é exibido:
. []
Fruits [get|post]
People [get|post]
https://localhost:5001/>
A saída anterior indica que há dois controladores disponíveis: Fruits e People. Ambos os controladores suportam operações HTTP GET e POST sem parâmetros.
Navegar em um controlador específico revela mais detalhes. Por exemplo, a saída do comando a seguir mostra que o Fruits controlador também suporta operações HTTP GET, PUT e DELETE. Cada uma dessas operações espera um id parâmetro na rota:
https://localhost:5001/fruits> ls
. [get|post]
.. []
{id} [get|put|delete]
https://localhost:5001/fruits>
Como alternativa, execute o ui comando para abrir a página da interface do usuário Swagger da API da Web em um navegador. Por exemplo:
https://localhost:5001/> ui
Navegue até um endereço
Para navegar até um ponto de extremidade diferente na API da Web, execute o cd comando:
https://localhost:5001/> cd people
O caminho que segue o comando cd não distingue maiúsculas de minúsculas. O seguinte formato de saída é exibido:
/people [get|post]
https://localhost:5001/people>
Personalizar o HttpRepl
As cores padrão do HttpRepl podem ser personalizadas. Além disso, um editor de texto padrão pode ser definido. As preferências do HttpRepl são guardadas na sessão atual e mantidas em sessões futuras. Uma vez modificadas, as preferências são armazenadas no seguinte arquivo:
O arquivo .httpreplprefs é carregado na inicialização e não monitorado para alterações em tempo de execução. Modificações manuais no arquivo entram em vigor somente depois de reiniciar a ferramenta.
Ver as definições
Para visualizar as configurações disponíveis, execute o pref get comando. Por exemplo:
https://localhost:5001/> pref get
O comando anterior exibe os pares chave-valor disponíveis:
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
Definir preferências de cor
Atualmente, a colorização da resposta é suportada apenas para JSON. Para personalizar a coloração padrão da ferramenta HttpRepl, localize a chave correspondente à cor a ser alterada. Para obter instruções sobre como encontrar as chaves, consulte a seção Exibir as configurações . Por exemplo, altere o valor da chave de colors.json para Green.
https://localhost:5001/people> pref set colors.json White
Apenas as cores permitidas podem ser usadas. As solicitações HTTP subsequentes exibem a saída com a nova coloração.
Quando chaves de cores específicas não são definidas, chaves mais genéricas são consideradas. Para demonstrar esse comportamento de fallback, considere o seguinte exemplo:
- Se
colors.json.namenão tiver um valor,colors.json.stringé usado. - Se
colors.json.stringnão tiver um valor,colors.json.literalé usado. - Se
colors.json.literalnão tiver um valor,colors.jsoné usado. - Se
colors.jsonnão tiver um valor, a cor de texto padrão do shell de comando (AllowedColors.None) será usada.
Definir o tamanho do recuo
Atualmente, a personalização do tamanho de recuo de resposta é suportada apenas para JSON. O tamanho padrão é dois espaços. Por exemplo:
[
{
"id": 1,
"name": "Apple"
},
{
"id": 2,
"name": "Orange"
},
{
"id": 3,
"name": "Strawberry"
}
]
Para alterar o tamanho padrão, defina a formatting.json.indentSize chave. Por exemplo, usar sempre quatro espaços:
pref set formatting.json.indentSize 4
As respostas subsequentes honram a definição de quatro espaços:
[
{
"id": 1,
"name": "Apple"
},
{
"id": 2,
"name": "Orange"
},
{
"id": 3,
"name": "Strawberry"
}
]
Definir o editor de texto padrão
Por padrão, o HttpRepl não tem nenhum editor de texto configurado para uso. Para testar métodos de API da Web que exigem um corpo de solicitação HTTP, um editor de texto padrão deve ser definido. A ferramenta HttpRepl inicia o editor de texto configurado com o único propósito de compor o corpo da solicitação. Execute o seguinte comando para definir seu editor de texto preferido como padrão:
pref set editor.command.default "<EXECUTABLE>"
No comando anterior, <EXECUTABLE> é o caminho completo para o arquivo executável do editor de texto. Por exemplo, execute o seguinte comando para definir o Visual Studio Code como o editor de texto padrão:
Para iniciar o editor de texto padrão com argumentos específicos da CLI, defina a editor.command.default.arguments chave. Por exemplo, suponha que o Visual Studio Code é o editor de texto padrão e que você sempre deseja que o HttpRepl abra o Visual Studio Code em uma nova sessão com extensões desabilitadas. Execute o seguinte comando:
pref set editor.command.default.arguments "--disable-extensions --new-window"
Tip
Se o seu editor padrão for o Visual Studio Code, normalmente irá querer passar o argumento -w ou --wait para forçar o Visual Studio Code a aguardar que feche o arquivo antes de retornar.
Definir os caminhos de pesquisa da Descrição da OpenAPI
Por padrão, o HttpRepl tem um conjunto de caminhos relativos que ele usa para encontrar a descrição OpenAPI ao executar o connect comando sem a --openapi opção. Esses caminhos relativos são combinados com os caminhos raiz e base especificados no connect comando. Os caminhos relativos padrão são:
swagger.jsonswagger/v1/swagger.json/swagger.json/swagger/v1/swagger.jsonopenapi.json/openapi.json
Para usar um conjunto diferente de caminhos de pesquisa em seu ambiente, defina a swagger.searchPaths preferência. O valor deve ser uma lista delimitada por barra vertical de caminhos relativos. Por exemplo:
pref set swagger.searchPaths "swagger/v2/swagger.json|swagger/v3/swagger.json"
Em vez de substituir completamente a lista padrão, a lista também pode ser modificada adicionando ou removendo caminhos.
Para adicionar um ou mais caminhos de pesquisa à lista padrão, defina a swagger.addToSearchPaths preferência. O valor deve ser uma lista delimitada por barra vertical de caminhos relativos. Por exemplo:
pref set swagger.addToSearchPaths "openapi/v2/openapi.json|openapi/v3/openapi.json"
Para remover um ou mais caminhos de pesquisa da lista padrão, defina a swagger.addToSearchPaths preferência. O valor deve ser uma lista delimitada por barra vertical de caminhos relativos. Por exemplo:
pref set swagger.removeFromSearchPaths "swagger.json|/swagger.json"
Testar solicitações HTTP GET
Synopsis
get <PARAMETER> [-F|--no-formatting] [-h|--header] [--response:body] [--response:headers] [-s|--streaming]
Arguments
PARAMETER
O parâmetro de rota, se houver, esperado pelo método de ação do controlador associado.
Opções
As seguintes opções estão disponíveis para o get comando:
-F|--no-formattingUm sinalizador cuja presença suprime a formatação de resposta HTTP.
-h|--headerDefine um cabeçalho de solicitação HTTP. Os dois formatos de valor a seguir são suportados:
{header}={value}{header}:{value}
--response:bodyEspecifica um arquivo no qual o corpo da resposta HTTP deve ser gravado. Por exemplo,
--response:body "C:\response.json". O ficheiro é criado se não existir.--response:headersEspecifica um arquivo no qual os cabeçalhos de resposta HTTP devem ser gravados. Por exemplo,
--response:headers "C:\response.txt". O ficheiro é criado se não existir.-s|--streamingUm sinalizador cuja presença permite o streaming da resposta HTTP.
Example
Para emitir uma solicitação HTTP GET:
Corra o
getcomando num ponto de extremidade que ofereça suporte a ele:https://localhost:5001/people> getO comando anterior exibe o seguinte formato de saída:
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>Recupere um registro específico passando um parâmetro para o
getcomando:https://localhost:5001/people> get 2O comando anterior exibe o seguinte formato de saída:
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>
Testar solicitações HTTP POST
Synopsis
post <PARAMETER> [-c|--content] [-f|--file] [-h|--header] [--no-body] [-F|--no-formatting] [--response] [--response:body] [--response:headers] [-s|--streaming]
Arguments
PARAMETER
O parâmetro de rota, se houver, esperado pelo método de ação do controlador associado.
Opções
-F|--no-formattingUm sinalizador cuja presença suprime a formatação de resposta HTTP.
-h|--headerDefine um cabeçalho de solicitação HTTP. Os dois formatos de valor a seguir são suportados:
{header}={value}{header}:{value}
--response:bodyEspecifica um arquivo no qual o corpo da resposta HTTP deve ser gravado. Por exemplo,
--response:body "C:\response.json". O ficheiro é criado se não existir.--response:headersEspecifica um arquivo no qual os cabeçalhos de resposta HTTP devem ser gravados. Por exemplo,
--response:headers "C:\response.txt". O ficheiro é criado se não existir.-s|--streamingUm sinalizador cuja presença permite o streaming da resposta HTTP.
-c|--contentFornece um corpo de solicitação HTTP embutido. Por exemplo,
-c "{\"id\":2,\"name\":\"Cherry\"}".-f|--fileFornece um caminho para um arquivo que contém o corpo da solicitação HTTP. Por exemplo,
-f "C:\request.json".--no-bodyIndica que nenhum corpo de solicitação HTTP é necessário.
Example
Para emitir uma solicitação HTTP POST:
Corra o
postcomando num ponto de extremidade que ofereça suporte a ele:https://localhost:5001/people> post -h Content-Type=application/jsonNo comando anterior, o cabeçalho da solicitação HTTP
Content-Typeé configurado para indicar que o tipo de conteúdo do corpo da solicitação é JSON. O editor de texto padrão abre um arquivo .tmp com um modelo JSON representando o corpo da solicitação HTTP. Por exemplo:{ "id": 0, "name": "" }Tip
Para definir o editor de texto padrão, consulte a seção Definir o editor de texto padrão .
Modifique o modelo JSON para satisfazer os requisitos de validação do modelo:
{ "id": 0, "name": "Scott Addie" }Salve o arquivo .tmp e feche o editor de texto. A seguinte saída aparece no shell de comando:
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>
Testar solicitações HTTP PUT
Synopsis
put <PARAMETER> [-c|--content] [-f|--file] [-h|--header] [--no-body] [-F|--no-formatting] [--response] [--response:body] [--response:headers] [-s|--streaming]
Arguments
PARAMETER
O parâmetro de rota, se houver, esperado pelo método de ação do controlador associado.
Opções
-F|--no-formattingUm sinalizador cuja presença suprime a formatação de resposta HTTP.
-h|--headerDefine um cabeçalho de solicitação HTTP. Os dois formatos de valor a seguir são suportados:
{header}={value}{header}:{value}
--response:bodyEspecifica um arquivo no qual o corpo da resposta HTTP deve ser gravado. Por exemplo,
--response:body "C:\response.json". O ficheiro é criado se não existir.--response:headersEspecifica um arquivo no qual os cabeçalhos de resposta HTTP devem ser gravados. Por exemplo,
--response:headers "C:\response.txt". O ficheiro é criado se não existir.-s|--streamingUm sinalizador cuja presença permite o streaming da resposta HTTP.
-c|--contentFornece um corpo de solicitação HTTP embutido. Por exemplo,
-c "{\"id\":2,\"name\":\"Cherry\"}".-f|--fileFornece um caminho para um arquivo que contém o corpo da solicitação HTTP. Por exemplo,
-f "C:\request.json".--no-bodyIndica que nenhum corpo de solicitação HTTP é necessário.
Example
Para emitir uma solicitação HTTP PUT:
Opcional: Execute o
getcomando para exibir os dados antes de modificá-los: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" } ]Corra o
putcomando num ponto de extremidade que ofereça suporte a ele:https://localhost:5001/fruits> put 2 -h Content-Type=application/jsonNo comando anterior, o cabeçalho da solicitação HTTP
Content-Typeé configurado para indicar que o tipo de conteúdo do corpo da solicitação é JSON. O editor de texto padrão abre um arquivo .tmp com um modelo JSON representando o corpo da solicitação HTTP. Por exemplo:{ "id": 0, "name": "" }Tip
Para definir o editor de texto padrão, consulte a seção Definir o editor de texto padrão .
Modifique o modelo JSON para satisfazer os requisitos de validação do modelo:
{ "id": 2, "name": "Cherry" }Salve o arquivo .tmp e feche o editor de texto. A seguinte saída aparece no shell de comando:
[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: KestrelOpcional: emita um
getcomando para ver as modificações. Por exemplo, se você digitou "Cherry" no editor de texto, agetretorna a seguinte saída: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>
Testar solicitações HTTP DELETE
Synopsis
delete <PARAMETER> [-F|--no-formatting] [-h|--header] [--response] [--response:body] [--response:headers] [-s|--streaming]
Arguments
PARAMETER
O parâmetro de rota, se houver, esperado pelo método de ação do controlador associado.
Opções
-F|--no-formattingUm sinalizador cuja presença suprime a formatação de resposta HTTP.
-h|--headerDefine um cabeçalho de solicitação HTTP. Os dois formatos de valor a seguir são suportados:
{header}={value}{header}:{value}
--response:bodyEspecifica um arquivo no qual o corpo da resposta HTTP deve ser gravado. Por exemplo,
--response:body "C:\response.json". O ficheiro é criado se não existir.--response:headersEspecifica um arquivo no qual os cabeçalhos de resposta HTTP devem ser gravados. Por exemplo,
--response:headers "C:\response.txt". O ficheiro é criado se não existir.-s|--streamingUm sinalizador cuja presença permite o streaming da resposta HTTP.
Example
Para emitir uma solicitação HTTP DELETE:
Opcional: Execute o
getcomando para exibir os dados antes de modificá-los: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" } ]Corra o
deletecomando num ponto de extremidade que ofereça suporte a ele:https://localhost:5001/fruits> delete 2O comando anterior exibe o seguinte formato de saída:
HTTP/1.1 204 No Content Date: Fri, 28 Jun 2019 17:36:42 GMT Server: KestrelOpcional: emita um
getcomando para ver as modificações. Neste exemplo, agetretorna a seguinte saída: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>
Testar solicitações HTTP PATCH
Synopsis
patch <PARAMETER> [-c|--content] [-f|--file] [-h|--header] [--no-body] [-F|--no-formatting] [--response] [--response:body] [--response:headers] [-s|--streaming]
Arguments
PARAMETER
O parâmetro de rota, se houver, esperado pelo método de ação do controlador associado.
Opções
-F|--no-formattingUm sinalizador cuja presença suprime a formatação de resposta HTTP.
-h|--headerDefine um cabeçalho de solicitação HTTP. Os dois formatos de valor a seguir são suportados:
{header}={value}{header}:{value}
--response:bodyEspecifica um arquivo no qual o corpo da resposta HTTP deve ser gravado. Por exemplo,
--response:body "C:\response.json". O ficheiro é criado se não existir.--response:headersEspecifica um arquivo no qual os cabeçalhos de resposta HTTP devem ser gravados. Por exemplo,
--response:headers "C:\response.txt". O ficheiro é criado se não existir.-s|--streamingUm sinalizador cuja presença permite o streaming da resposta HTTP.
-c|--contentFornece um corpo de solicitação HTTP embutido. Por exemplo,
-c "{\"id\":2,\"name\":\"Cherry\"}".-f|--fileFornece um caminho para um arquivo que contém o corpo da solicitação HTTP. Por exemplo,
-f "C:\request.json".--no-bodyIndica que nenhum corpo de solicitação HTTP é necessário.
Testes de solicitações HTTP HEAD
Synopsis
head <PARAMETER> [-F|--no-formatting] [-h|--header] [--response] [--response:body] [--response:headers] [-s|--streaming]
Arguments
PARAMETER
O parâmetro de rota, se houver, esperado pelo método de ação do controlador associado.
Opções
-F|--no-formattingUm sinalizador cuja presença suprime a formatação de resposta HTTP.
-h|--headerDefine um cabeçalho de solicitação HTTP. Os dois formatos de valor a seguir são suportados:
{header}={value}{header}:{value}
--response:bodyEspecifica um arquivo no qual o corpo da resposta HTTP deve ser gravado. Por exemplo,
--response:body "C:\response.json". O ficheiro é criado se não existir.--response:headersEspecifica um arquivo no qual os cabeçalhos de resposta HTTP devem ser gravados. Por exemplo,
--response:headers "C:\response.txt". O ficheiro é criado se não existir.-s|--streamingUm sinalizador cuja presença permite o streaming da resposta HTTP.
Testar solicitações HTTP OPTIONS
Synopsis
options <PARAMETER> [-F|--no-formatting] [-h|--header] [--response] [--response:body] [--response:headers] [-s|--streaming]
Arguments
PARAMETER
O parâmetro de rota, se houver, esperado pelo método de ação do controlador associado.
Opções
-F|--no-formattingUm sinalizador cuja presença suprime a formatação de resposta HTTP.
-h|--headerDefine um cabeçalho de solicitação HTTP. Os dois formatos de valor a seguir são suportados:
{header}={value}{header}:{value}
--response:bodyEspecifica um arquivo no qual o corpo da resposta HTTP deve ser gravado. Por exemplo,
--response:body "C:\response.json". O ficheiro é criado se não existir.--response:headersEspecifica um arquivo no qual os cabeçalhos de resposta HTTP devem ser gravados. Por exemplo,
--response:headers "C:\response.txt". O ficheiro é criado se não existir.-s|--streamingUm sinalizador cuja presença permite o streaming da resposta HTTP.
Definir cabeçalhos de solicitação HTTP
Para definir um cabeçalho de solicitação HTTP, use uma das seguintes abordagens:
Defina em linha com a solicitação HTTP. Por exemplo:
https://localhost:5001/people> post -h Content-Type=application/jsonCom a abordagem anterior, cada cabeçalho de solicitação HTTP distinto requer sua própria
-hopção.Defina antes de enviar a solicitação HTTP. Por exemplo:
https://localhost:5001/people> set header Content-Type application/jsonAo definir o cabeçalho antes de enviar uma solicitação, o cabeçalho permanece definido durante a sessão do shell de comando. Para limpar o cabeçalho, forneça um valor vazio. Por exemplo:
https://localhost:5001/people> set header Content-Type
Testar pontos finais seguros
O HttpRepl suporta o teste de pontos de extremidade seguros das seguintes maneiras:
- Através das credenciais padrão do usuário conectado.
- Através do uso de cabeçalhos de solicitação HTTP.
Credenciais padrão
Considere uma API da Web que você está testando hospedada no IIS e protegida com autenticação do Windows. Você deseja que as credenciais do usuário que executa a ferramenta fluam para os pontos de extremidade HTTP que estão sendo testados. Para passar as credenciais padrão do usuário conectado:
Defina a
httpClient.useDefaultCredentialspreferência paratrue:pref set httpClient.useDefaultCredentials trueSaia e reinicie a ferramenta antes de enviar outra solicitação para a API da Web.
Credenciais de proxy padrão
Considere um cenário em que a API da Web que você está testando esteja atrás de um proxy protegido com autenticação do Windows. Você deseja que as credenciais do usuário que executa a ferramenta fluam para o proxy. Para passar as credenciais padrão do usuário conectado:
Defina a
httpClient.proxy.useDefaultCredentialspreferência paratrue:pref set httpClient.proxy.useDefaultCredentials trueSaia e reinicie a ferramenta antes de enviar outra solicitação para a API da Web.
Cabeçalhos de solicitação HTTP
Exemplos de esquemas de autenticação e autorização suportados incluem:
- Autenticação básica
- Tokens ao portador JWT
- Autenticação Digest
Por exemplo, você pode enviar um token bearer para um endpoint com o seguinte comando:
set header Authorization "bearer <TOKEN VALUE>"
Para acessar um ponto de extremidade hospedado no Azure ou usar a API do AzureREST, você precisa de um token de portador. Use as etapas a seguir para obter um token de portador para sua assinatura do Azure por meio da CLI do Azure. O HttpRepl define o token de portador em um cabeçalho de solicitação HTTP. Uma lista de Aplicativos Web do Serviço de Aplicativo do Azure é recuperada.
Entre no Azure:
az loginObtenha o ID da sua subscrição com o seguinte comando:
az account show --query idCopie o ID da sua subscrição e execute o seguinte comando:
az account set --subscription "<SUBSCRIPTION ID>"Obtenha o seu token de portador com o seguinte comando:
az account get-access-token --query accessTokenConecte-se à API do Azure REST por meio do HttpRepl:
httprepl https://management.azure.comDefina o cabeçalho da
Authorizationsolicitação HTTP:https://management.azure.com/> set header Authorization "bearer <ACCESS TOKEN>"Navegue até a assinatura:
https://management.azure.com/> cd subscriptions/<SUBSCRIPTION ID>Obtenha uma lista dos Aplicativos Web do Serviço de Aplicativo do Azure da sua assinatura:
https://management.azure.com/subscriptions/{SUBSCRIPTION ID}> get providers/Microsoft.Web/sites?api-version=2016-08-01A seguinte resposta é exibida:
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> ] }
Alternar exibição de solicitação HTTP
Por padrão, a exibição da solicitação HTTP que está sendo enviada é suprimida. É possível alterar a configuração correspondente durante a sessão do shell de comando.
Ativar a exibição de solicitações
Exiba a solicitação HTTP que está sendo enviada executando o echo on comando. Por exemplo:
https://localhost:5001/people> echo on
Request echoing is on
As solicitações HTTP subsequentes na sessão atual exibem os cabeçalhos das solicitações. Por exemplo:
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>
Desativar a exibição de solicitações
Suprima a exibição da solicitação HTTP que está sendo enviada executando o echo off comando. Por exemplo:
https://localhost:5001/people> echo off
Request echoing is off
Executar um script
Se você executar com freqüência o mesmo conjunto de comandos HttpRepl, considere armazená-los em um arquivo de texto. Os comandos no arquivo assumem a mesma forma que os comandos executados manualmente na linha de comando. Os comandos podem ser executados em lote usando o run comando. Por exemplo:
Crie um arquivo de texto contendo um conjunto de comandos delimitados por nova linha. Para ilustrar, considere um arquivo people-script.txt contendo os seguintes comandos:
set base https://localhost:5001 ls cd People ls get 1Execute o
runcomando, passando o caminho do arquivo de texto. Por exemplo:https://localhost:5001/> run C:\http-repl-scripts\people-script.txtA seguinte saída é exibida:
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>
Limpar a saída
Para remover toda a saída gravada no shell de comando pela ferramenta HttpRepl, execute os comandos clear ou cls. Para ilustrar, imagine que o shell de comando contém a seguinte saída:
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/>
Execute o seguinte comando para limpar a saída:
https://localhost:5001/> clear
Depois de executar o comando anterior, o shell de comando contém apenas a seguinte saída:
https://localhost:5001/>