.http 文件使用

使用 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.jsonhttp-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}}
上一篇
下一篇