使用 Visual Studio 2022 中的 .http 文件 | Microsoft Learn
.http 文件语法
-
请求:HTTP 请求的格式为
HTTPMethod URL HTTPVersion,其中 HTTP 方法可以是 GET、POST、PUT 等,URL 是请求的目标地址,HTTPVersion 是可选的。
示例:GET https://api.example.com/data HTTP/1.1 POST https://api.example.com/create -
请求标头:标头添加在请求行之后,格式为
HeaderName: Value。
示例:GET https://api.example.com/data Accept: application/json Authorization: Bearer YOUR_ACCESS_TOKEN -
请求正文:在空白行后面添加请求正文。
示例:POST https://api.example.com/create Content-Type: application/json { "name": "John Doe", "age": 30 } -
注释:以
#或//开头的行是注释,会被忽略。
示例:# This is a comment line // Another comment GET https://api.example.com/data -
变量:以
@开头的行定义变量,格式为@VariableName=Value,变量可以在后续请求中通过{{VariableName}}引用。
示例:@apiUrl=https://api.example.com @token=YOUR_ACCESS_TOKEN GET {{apiUrl}}/data Authorization: Bearer {{token}}
环境文件
-
环境文件(
http-client.env.json)用于在不同环境中为变量提供不同的值。
示例:{ "dev": { "apiUrl": "https://dev.example.com", "token": "DEV_ACCESS_TOKEN" }, "prod": { "apiUrl": "https://api.example.com", "token": "PROD_ACCESS_TOKEN" } } -
环境文件是一个 JSON 文件,包含多个命名环境及其对应的变量。
示例:{ "dev": { "host": "localhost", "port": 5000 }, "prod": { "host": "api.example.com", "port": 443 } } -
可以通过
.http文件编辑器右上角的环境选择器来选择当前环境。
示例:GET {{apiUrl}}/data Authorization: Bearer {{token}} -
特殊环境
$shared用于定义在多个环境中相同的值。
示例:{ "$shared": { "apiUrl": "https://api.example.com" }, "dev": { "token": "DEV_ACCESS_TOKEN" }, "prod": { "token": "PROD_ACCESS_TOKEN" } }
特定于用户的环境文件
-
用户特定的值应存储在
http-client.env.json.user文件中,该文件默认不提交到源代码管理。
示例:{ "dev": { "token": "USER_DEV_ACCESS_TOKEN" } } -
如果在
http-client.env.json和http-client.env.json.user中都定义了变量,则用户文件中的值优先级更高。
示例:// http-client.env.json { "dev": { "token": "DEFAULT_DEV_ACCESS_TOKEN" } } // http-client.env.json.user { "dev": { "token": "USER_DEV_ACCESS_TOKEN" } }
机密管理
-
ASP.NET Core 用户机密:可以通过环境文件从用户机密中获取值。
示例:{ "dev": { "ApiKey": { "provider": "AspnetUserSecrets", "secretName": "config:ApiKey" } } } -
Azure Key Vault:可以使用 Azure Key Vault 中的机密值,需要登录到有权访问 Key Vault 的帐户。
示例:{ "dev": { "SecretKey": { "provider": "AzureKeyVault", "secretName": "SecretKey", "resourceId": "/subscriptions/your-subscription-id/resourceGroups/your-resource-group/providers/Microsoft.KeyVault/vaults/your-key-vault" } } } -
DPAPI 加密:使用 Windows 的数据保护 API (DPAPI) 加密敏感数据,加密值特定于用户和计算机。
示例:{ "dev": { "SensitiveData": { "provider": "Encrypted", "value": "AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAA..." } } }
其他功能
-
环境变量:可以通过
$processEnv获取环境变量的值。
示例:GET {{apiUrl}}/data X-USERNAME: {{$processEnv USERNAME}} -
.env 文件:可以通过
$dotenv获取.env文件中定义的变量值。
示例:// .env 文件 API_KEY=your_api_key // .http 文件 GET {{apiUrl}}/data X-API-KEY: {{$dotenv API_KEY}} -
随机整数:使用
$randomInt生成随机整数。
示例:GET {{apiUrl}}/data X-RANDOM-ID: {{$randomInt 1000 9999}} -
日期和时间:使用
$datetime、$localDatetime和$timestamp生成日期和时间字符串。
示例:GET {{apiUrl}}/data X-CURRENT-DATE: {{$datetime "yyyy-MM-dd"}} X-TIMESTAMP: {{$timestamp}}
保存变量
Rider 默认支持使用 js 语法解析返回结果,并保存至变量 code 需要安装插件,下面是 Rider 中的例子。代码包括在 > {% 。。。 %} 中
@WebApi_HostAddress = http://localhost:5190
POST {{WebApi_HostAddress}}/auth/
Accept: application/json
Content-Type: application/json
{
"username": "admin",
"password": "password"
}
> {%
let body = response.body // 使用 javascript 语法
client.global.set("auth_token", body.token); // 设置全局变量, 使用 {{auth_token}} 获取
console.log("token: ", body.token); // 输出日志,必须要返回为 json 结构,在 Rider 的 .http 结果有一个响应处理程序标签页中显示
%}
###
GET {{WebApi_HostAddress}}/weatherforecast/
Accept: application/json
Authorization: Bearer {{auth_token}}