- 使用 HTTP REPL 测试 Web APITest web APIs with the HTTP REPL
- 必备条件Prerequisites
- 安装Installation
- 使用情况Usage
- 连接到 Web APIConnect to the web API
- 手动指向 Web API 的 Swagger 文档Manually point to the Swagger document for the web API
- 浏览 Web APINavigate the web API
- 自定义 HTTP REPLCustomize the HTTP REPL
- 测试 HTTP GET 请求Test HTTP GET requests
- 测试 HTTP POST 请求Test HTTP POST requests
- 测试 HTTP PUT 请求Test HTTP PUT requests
- 测试 HTTP DELETE 请求Test HTTP DELETE requests
- 测试 HTTP PATCH 请求Test HTTP PATCH requests
- 测试 HTTP HEAD 请求Test HTTP HEAD requests
- 测试 HTTP OPTIONS 请求Test HTTP OPTIONS requests
- 设置 HTTP 请求标头Set HTTP request headers
- 测试受保护的终结点Test secured endpoints
- 切换 HTTP 请求显示Toggle HTTP request display
- 运行脚本Run a script
- 清除输出Clear the output
- 其他资源Additional resources
使用 HTTP REPL 测试 Web APITest web APIs with the HTTP REPL
本文内容
作者:Scott Addie
HTTP 读取–求值–打印循环 (REPL):
- 一种轻量级跨平台命令行工具,在所有支持的 .NET Core 的位置都可得到支持。
- 用于发出 HTTP 请求以测试 ASP.NET Core Web API(和非 ASP.NET Core web API)并查看其结果。
- 可以在任何环境下测试托管的 web API,包括 localhost 和 Azure 应用服务。
支持以下 HTTP 谓词:
若要继续操作,请查看或下载示例 ASP.NET Core Web API(下载方式)。
必备条件Prerequisites
安装Installation
若要安装 HTTP REPL,运行以下命令:
dotnet tool install -g Microsoft.dotnet-httprepl
从 Microsoft.dotnet-httprepl NuGet 包安装 .NET Core 全局工具。
使用情况Usage
成功安装该工具后,运行以下命令以启动 HTTP REPL:
httprepl
若要查看可用的 HTTP REPL 命令,请运行下面的一个命令:
httprepl -h
httprepl --help
显示以下输出:
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.
set base Set the base URI. e.g. `set base http://locahost:5000`
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.
HTTP REPL 提供命令完成。按 Tab 键可循环访问补全所键入字符或 API 终结点的命令的列表。以下部分概述了可用的 CLI 命令。
连接到 Web APIConnect to the web API
运行以下命令,连接到 Web API:
httprepl <ROOT URI>
<ROOT URI>
是 Web API 的基 URI。例如:
httprepl https://localhost:5001
或者,在 HTTP REPL 运行期间的任何时刻运行以下命令:
connect <ROOT URI>
例如:
(Disconnected)~ connect https://localhost:5001
手动指向 Web API 的 Swagger 文档Manually point to the Swagger document for the web API
上述 connect 命令将尝试自动查找 Swagger 文档。如果由于某种原因而无法执行此操作,则可以使用 —swagger
选项指定 Web API 的 Swagger 文档的 URI:
connect <ROOT URI> --swagger <SWAGGER URI>
例如:
(Disconnected)~ connect https://localhost:5001 --swagger /swagger/v1/swagger.json
浏览 Web APINavigate the web API
查看可用的终结点View available endpoints
若要在 Web API 地址的当前路径中列出不同的终结点(控制器),请运行 ls
或 dir
命令:
https://localhot:5001/~ ls
以下输出格式随即显示:
. []
Fruits [get|post]
People [get|post]
https://localhost:5001/~
上述输出指示有两个控制器可用:Fruits
和 People
。这两个控制器都支持无参数 HTTP GET 和 POST 操作。
导航到特定控制器可显示更多详细信息。例如,以下命令的输出显示 Fruits
控制器还支持 HTTP GET、PUT 和 DELETE 操作。其中每个操作都需要路由中有一个 id
参数:
https://localhost:5001/fruits~ ls
. [get|post]
.. []
{id} [get|put|delete]
https://localhost:5001/fruits~
或者,运行 ui
命令,在浏览器中打开 Web API 的 Swagger UI 页。例如:
https://localhost:5001/~ ui
导航到一个终结点Navigate to an endpoint
若要在 Web API 上导航到其他终结点,请运行 cd
命令:
https://localhost:5001/~ cd people
cd
命令后的路径不区分大小写。以下输出格式随即显示:
/people [get|post]
https://localhost:5001/people~
自定义 HTTP REPLCustomize the HTTP REPL
可自定义 HTTP REPL 的默认颜色。此外,还可定义默认文本编辑器。HTTP REPL 首选项在当前会话中保持不变,并且也会在之后的会话中使用。修改后,首选项存储在以下文件中:
%HOME%/.httpreplprefs
%HOME%/.httpreplprefs
%USERPROFILE% .httpreplprefs\
.httpreplprefs 文件将在启动时加载,并且在运行时不监控对其的更改。对文件的手动修改只会在重启该工具后生效。
查看设置View the settings
若要查看可用的设置,请运行 pref get
命令。例如:
https://localhost:5001/~ pref get
上述命令显示可用的键值对:
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
设置颜色首选项Set color preferences
当前仅 JSON 支持响应着色。若要自定义默认的 HTTP REPL 工具着色,请找到与要更改的颜色相对应的键。有关如何查找键的说明,请参阅查看设置部分。例如,将 colors.json
键值从 Green
更改为 White
如下所示:
https://localhost:5001/people~ pref set colors.json White
只能使用允许的颜色。后续 HTTP 请求使用新着色显示输出。
如果未设置特定颜色键,则会考虑使用更通用的键。若要演示此回退行为,请考虑使用以下示例:
- 如果
colors.json.name
没有值,则使用colors.json.string
。 - 如果
colors.json.string
没有值,则使用colors.json.literal
。 - 如果
colors.json.literal
没有值,则使用colors.json
。 - 如果
colors.json
没有值,则使用命令行界面的默认文本颜色 (AllowedColors.None
)。
设置缩进尺寸Set indentation size
当前,仅 JSON 支持响应缩进尺寸自定义。默认尺寸为两个空格。例如:
[
{
"id": 1,
"name": "Apple"
},
{
"id": 2,
"name": "Orange"
},
{
"id": 3,
"name": "Strawberry"
}
]
若要更改默认尺寸,请设置 formatting.json.indentSize
键。例如,始终使用四个空格:
pref set formatting.json.indentSize 4
后续响应遵循四个空格的设置:
[
{
"id": 1,
"name": "Apple"
},
{
"id": 2,
"name": "Orange"
},
{
"id": 3,
"name": "Strawberry"
}
]
设置默认文本编辑器Set the default text editor
默认情况下,HTTP REPL 未配置任何文本编辑器供使用。若要测试需要 HTTP 请求正文的 Web API 方法,必须设置默认文本编辑器。HTTP REPL 工具将启动已配置的文本编辑器,专门用于编写请求正文。运行以下命令,将你青睐的文本编辑器设置为默认编辑器:
pref set editor.command.default "<EXECUTABLE>"
在上述命令中,<EXECUTABLE>
是文本编辑器可执行文件的完整路径。例如,运行以下命令,将 Visual Studio Code 设置为默认文本编辑器:
pref set editor.command.default "/usr/bin/code"
pref set editor.command.default "/Applications/Visual Studio Code.app/Contents/Resources/app/bin/code"
pref set editor.command.default "C:\Program Files\Microsoft VS Code\Code.exe"
若要使用特定 CLI 参数启动默认文本编辑器,请设置 editor.command.default.arguments
键。例如,假设 Visual Studio Code 为默认文本编辑器,并且你总是希望 HTTP REPL 在禁用了扩展的新会话中打开 Visual Studio Code。运行以下命令:
pref set editor.command.default.arguments "--disable-extensions --new-window"
设置 Swagger 搜索路径Set the Swagger search paths
默认情况下,HTTP REPL 具有一组相对路径,可用于在不使用 connect
选项执行 —swagger
命令时查找 Swagger 文档。将这些相对路径与 connect
命令中指定的根路径和基路径组合在一起。默认相对路径为:
- swagger.json
- swagger/v1/swagger.json
- /swagger.json
- /swagger/v1/swagger.json
若要在环境中使用一组不同的搜索路径,请设置 swagger.searchPaths
首选项。该值必须是以竖线分隔的相对路径列表。例如:
pref set swagger.searchPaths "swagger/v2/swagger.json|swagger/v3/swagger.json"
测试 HTTP GET 请求Test HTTP GET requests
摘要Synopsis
get <PARAMETER> [-F|--no-formatting] [-h|--header] [--response] [--response:body] [--response:headers] [-s|--streaming]
参数Arguments
PARAMETER
关联控制器操作方法所需的路由参数(如果有)。
选项Options
get
命令可以使用以下选项:
-F|—no-formatting
禁用 HTTP 响应格式的标志。
-h|—header
设置 HTTP 请求标头。支持以下两种值格式:
{header}={value}
{header}:{value}
—response
指定一个文件,整个 HTTP 响应(包括标头和正文)应写入该文件。例如,—response "C:\response.txt"
。如果文件不存在,则创建该文件。
—response:body
指定一个文件,HTTP 响应正文应写入该文件。例如,—response:body "C:\response.json"
。如果文件不存在,则创建该文件。
—response:headers
指定一个文件,HTTP 响应标头应写入该文件。例如,—response:headers "C:\response.txt"
。如果文件不存在,则创建该文件。
-s|—streaming
支持 HTTP 响应流式处理的标志。
示例Example
发出 HTTP GET 请求:
- 在支持
get
命令的终结点上运行该命令:
https://localhost:5001/people~ get
上述命令显示以下输出格式:
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~
- 通过将参数传递给
get
命令来检索特定记录:
https://localhost:5001/people~ get 2
上述命令显示以下输出格式:
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 请求Test HTTP POST requests
摘要Synopsis
post <PARAMETER> [-c|--content] [-f|--file] [-h|--header] [--no-body] [-F|--no-formatting] [--response] [--response:body] [--response:headers] [-s|--streaming]
参数Arguments
PARAMETER
关联控制器操作方法所需的路由参数(如果有)。
选项Options
-F|—no-formatting
禁用 HTTP 响应格式的标志。
-h|—header
设置 HTTP 请求标头。支持以下两种值格式:
{header}={value}
{header}:{value}
—response
指定一个文件,整个 HTTP 响应(包括标头和正文)应写入该文件。例如,—response "C:\response.txt"
。如果文件不存在,则创建该文件。
—response:body
指定一个文件,HTTP 响应正文应写入该文件。例如,—response:body "C:\response.json"
。如果文件不存在,则创建该文件。
—response:headers
指定一个文件,HTTP 响应标头应写入该文件。例如,—response:headers "C:\response.txt"
。如果文件不存在,则创建该文件。
-s|—streaming
支持 HTTP 响应流式处理的标志。
-c|—content
提供内联 HTTP 请求正文。例如,-c "{"id":2,"name":"Cherry"}"
。
-f|—file
提供包含 HTTP 请求正文的文件的路径。例如,-f "C:\request.json"
。
—no-body
指示无需 HTTP 请求正文。
示例Example
发出 HTTP POST 请求:
- 在支持
post
命令的终结点上运行该命令:
https://localhost:5001/people~ post -h Content-Type=application/json
在上述命令中,Content-Type
HTTP 请求标头被设置为指示 JSON 的请求正文媒体类型。默认文本编辑器打开一个 .tmp文件,其中包含一个表示 HTTP 请求正文的 JSON 模板。例如:
{
"id": 0,
"name": ""
}
提示
若要设置默认文本编辑器,请参阅设置默认文本编辑器部分。
- 修改 JSON 模板以满足模型验证要求:
{
"id": 0,
"name": "Scott Addie"
}
- 保存 .tmp文件,并关闭文本编辑器。以下输出显示在命令行界面中:
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 请求Test HTTP PUT requests
摘要Synopsis
put <PARAMETER> [-c|--content] [-f|--file] [-h|--header] [--no-body] [-F|--no-formatting] [--response] [--response:body] [--response:headers] [-s|--streaming]
参数Arguments
PARAMETER
关联控制器操作方法所需的路由参数(如果有)。
选项Options
-F|—no-formatting
禁用 HTTP 响应格式的标志。
-h|—header
设置 HTTP 请求标头。支持以下两种值格式:
{header}={value}
{header}:{value}
—response
指定一个文件,整个 HTTP 响应(包括标头和正文)应写入该文件。例如,—response "C:\response.txt"
。如果文件不存在,则创建该文件。
—response:body
指定一个文件,HTTP 响应正文应写入该文件。例如,—response:body "C:\response.json"
。如果文件不存在,则创建该文件。
—response:headers
指定一个文件,HTTP 响应标头应写入该文件。例如,—response:headers "C:\response.txt"
。如果文件不存在,则创建该文件。
-s|—streaming
支持 HTTP 响应流式处理的标志。
-c|—content
提供内联 HTTP 请求正文。例如,-c "{"id":2,"name":"Cherry"}"
。
-f|—file
提供包含 HTTP 请求正文的文件的路径。例如,-f "C:\request.json"
。
—no-body
指示无需 HTTP 请求正文。
示例Example
发出 HTTP PUT 请求:
- 可选:运行
get
命令,在修改之前查看数据:
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"
}
]
- 在支持
put
命令的终结点上运行该命令:
https://localhost:5001/fruits~ put 2 -h Content-Type=application/json
在上述命令中,Content-Type
HTTP 请求标头被设置为指示 JSON 的请求正文媒体类型。默认文本编辑器打开一个 .tmp文件,其中包含一个表示 HTTP 请求正文的 JSON 模板。例如:
{
"id": 0,
"name": ""
}
提示
若要设置默认文本编辑器,请参阅设置默认文本编辑器部分。
- 修改 JSON 模板以满足模型验证要求:
{
"id": 2,
"name": "Cherry"
}
- 保存 .tmp文件,并关闭文本编辑器。以下输出显示在命令行界面中:
[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
- 可选:发出
get
命令来查看修改。例如,如果在文本编辑器中键入“Cherry”,get
会返回以下内容:
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 请求Test HTTP DELETE requests
摘要Synopsis
delete <PARAMETER> [-F|--no-formatting] [-h|--header] [--response] [--response:body] [--response:headers] [-s|--streaming]
参数Arguments
PARAMETER
关联控制器操作方法所需的路由参数(如果有)。
选项Options
-F|—no-formatting
禁用 HTTP 响应格式的标志。
-h|—header
设置 HTTP 请求标头。支持以下两种值格式:
{header}={value}
{header}:{value}
—response
指定一个文件,整个 HTTP 响应(包括标头和正文)应写入该文件。例如,—response "C:\response.txt"
。如果文件不存在,则创建该文件。
—response:body
指定一个文件,HTTP 响应正文应写入该文件。例如,—response:body "C:\response.json"
。如果文件不存在,则创建该文件。
—response:headers
指定一个文件,HTTP 响应标头应写入该文件。例如,—response:headers "C:\response.txt"
。如果文件不存在,则创建该文件。
-s|—streaming
支持 HTTP 响应流式处理的标志。
示例Example
发出 HTTP DELETE 请求:
- 可选:运行
get
命令,在修改之前查看数据:
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"
}
]
- 在支持
delete
命令的终结点上运行该命令:
https://localhost:5001/fruits~ delete 2
上述命令显示以下输出格式:
HTTP/1.1 204 No Content
Date: Fri, 28 Jun 2019 17:36:42 GMT
Server: Kestrel
- 可选:发出
get
命令来查看修改。在此示例中,get
返回以下内容:
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 请求Test HTTP PATCH requests
摘要Synopsis
patch <PARAMETER> [-c|--content] [-f|--file] [-h|--header] [--no-body] [-F|--no-formatting] [--response] [--response:body] [--response:headers] [-s|--streaming]
参数Arguments
PARAMETER
关联控制器操作方法所需的路由参数(如果有)。
选项Options
-F|—no-formatting
禁用 HTTP 响应格式的标志。
-h|—header
设置 HTTP 请求标头。支持以下两种值格式:
{header}={value}
{header}:{value}
—response
指定一个文件,整个 HTTP 响应(包括标头和正文)应写入该文件。例如,—response "C:\response.txt"
。如果文件不存在,则创建该文件。
—response:body
指定一个文件,HTTP 响应正文应写入该文件。例如,—response:body "C:\response.json"
。如果文件不存在,则创建该文件。
—response:headers
指定一个文件,HTTP 响应标头应写入该文件。例如,—response:headers "C:\response.txt"
。如果文件不存在,则创建该文件。
-s|—streaming
支持 HTTP 响应流式处理的标志。
-c|—content
提供内联 HTTP 请求正文。例如,-c "{"id":2,"name":"Cherry"}"
。
-f|—file
提供包含 HTTP 请求正文的文件的路径。例如,-f "C:\request.json"
。
—no-body
指示无需 HTTP 请求正文。
测试 HTTP HEAD 请求Test HTTP HEAD requests
摘要Synopsis
head <PARAMETER> [-F|--no-formatting] [-h|--header] [--response] [--response:body] [--response:headers] [-s|--streaming]
参数Arguments
PARAMETER
关联控制器操作方法所需的路由参数(如果有)。
选项Options
-F|—no-formatting
禁用 HTTP 响应格式的标志。
-h|—header
设置 HTTP 请求标头。支持以下两种值格式:
{header}={value}
{header}:{value}
—response
指定一个文件,整个 HTTP 响应(包括标头和正文)应写入该文件。例如,—response "C:\response.txt"
。如果文件不存在,则创建该文件。
—response:body
指定一个文件,HTTP 响应正文应写入该文件。例如,—response:body "C:\response.json"
。如果文件不存在,则创建该文件。
—response:headers
指定一个文件,HTTP 响应标头应写入该文件。例如,—response:headers "C:\response.txt"
。如果文件不存在,则创建该文件。
-s|—streaming
支持 HTTP 响应流式处理的标志。
测试 HTTP OPTIONS 请求Test HTTP OPTIONS requests
摘要Synopsis
options <PARAMETER> [-F|--no-formatting] [-h|--header] [--response] [--response:body] [--response:headers] [-s|--streaming]
参数Arguments
PARAMETER
关联控制器操作方法所需的路由参数(如果有)。
选项Options
-F|—no-formatting
禁用 HTTP 响应格式的标志。
-h|—header
设置 HTTP 请求标头。支持以下两种值格式:
{header}={value}
{header}:{value}
—response
指定一个文件,整个 HTTP 响应(包括标头和正文)应写入该文件。例如,—response "C:\response.txt"
。如果文件不存在,则创建该文件。
—response:body
指定一个文件,HTTP 响应正文应写入该文件。例如,—response:body "C:\response.json"
。如果文件不存在,则创建该文件。
—response:headers
指定一个文件,HTTP 响应标头应写入该文件。例如,—response:headers "C:\response.txt"
。如果文件不存在,则创建该文件。
-s|—streaming
支持 HTTP 响应流式处理的标志。
设置 HTTP 请求标头Set HTTP request headers
若要设置 HTTP 请求标头,请使用下面一种方法:
- 使用该 HTTP 请求进行内联设置。例如:
https://localhost:5001/people~ post -h Content-Type=application/json
若使用上述方法,每个不同的 HTTP 请求标头都需要其自己的 -h
选项。
- 在发送 HTTP 请求之前进行设置。例如:
https://localhost:5001/people~ set header Content-Type application/json
在发送请求之前设置标头时,标头在命令行界面会话期间保持设置。若要清除标头,请提供一个空值。例如:
https://localhost:5001/people~ set header Content-Type
测试受保护的终结点Test secured endpoints
HTTP REPL 支持通过使用 HTTP 请求标头来测试受保护的终结点。支持的身份验证和授权方案的示例包括基本身份验证、JWT 持有者令牌和摘要式身份验证。例如,可以使用以下命令将持有者令牌发送到终结点:
set header Authorization "bearer <TOKEN VALUE>"
若要访问 Azure 托管的终结点或使用 Azure REST API,你需要持有者令牌。使用以下步骤,通过 Azure CLI 来获取 Azure 订阅的持有者令牌。HTTP REPL 设置 HTTP 请求标头中的持有者令牌,并检索 Azure 应用服务 Web 应用的列表。
- 登录到 Azure:
az login
- 使用以下命令获取订阅 ID:
az account show --query id
- 复制订阅 ID 并运行以下命令:
az account set --subscription "<SUBSCRIPTION ID>"
- 使用以下命令获取持有者令牌:
az account get-access-token --query accessToken
- 通过 HTTP REPL 连接到 Azure REST API:
httprepl https://management.azure.com
- 设置
Authorization
HTTP 请求标头:
https://management.azure.com/> set header Authorization "bearer <ACCESS TOKEN>"
- 导航到订阅:
https://management.azure.com/> cd subscriptions/<SUBSCRIPTION ID>
- 获取订阅的 Azure 应用服务 Web 应用的列表:
https://management.azure.com/subscriptions/{SUBSCRIPTION ID}> get providers/Microsoft.Web/sites?api-version=2016-08-01
将显示以下响应:
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 请求显示Toggle HTTP request display
默认情况下,禁止显示正在发送的 HTTP 请求。可在命令行界面会话期间更改相应的设置。
启用请求显示Enable request display
运行 echo on
命令可查看正在发送的 HTTP 请求。例如:
https://localhost:5001/people~ echo on
Request echoing is on
当前会话中的后续 HTTP 请求显示请求标头。例如:
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~
禁用请求显示Disable request display
运行 echo off
命令可禁止显示正在发送的 HTTP 请求。例如:
https://localhost:5001/people~ echo off
Request echoing is off
运行脚本Run a script
如果经常执行一组相同的 HTTP REPL 命令,请考虑将它们存储在一个文本文件中。文件中的命令采用与在命令行上手动执行的命令相同的形式。可使用 run
命令批量执行这些命令。例如:
- 创建一个文本文件,其中包含一组换行符分隔的命令。例如,一个包含以下命令的 people-script.txt 文件:
set base https://localhost:5001
ls
cd People
ls
get 1
- 执行
run
命令,传入文本文件的路径。例如:
https://localhost:5001/~ run C:\http-repl-scripts\people-script.txt
将显示以下输出:
https://localhost:5001/~ set base https://localhost:5001
Using swagger metadata from 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~
清除输出Clear the output
若要删除 HTTP REPL 工具写入命令行界面的所有输出,请运行 clear
或 cls
命令。例如,假设命令行界面包含以下输出:
httprepl https://localhost:5001
(Disconnected)~ set base "https://localhost:5001"
Using swagger metadata from https://localhost:5001/swagger/v1/swagger.json
https://localhost:5001/~ ls
. []
Fruits [get|post]
People [get|post]
https://localhost:5001/~
运行以下命令以清除输出:
https://localhost:5001/~ clear
运行上述命令后,命令行界面仅包含以下输出:
https://localhost:5001/~