扩展 VSCode

发布于 更新于

AI总结: 本文介绍了如何在Visual Studio Code中使用自定义变量和环境变量来管理HTTP请求的配置。主要内容包括定义共享变量、文件变量、请求变量、提示变量和内置变量等,以及如何通过修改配置文件来取消代理设置。 优化建议: 1. 考虑提供具体的示例代码,以便用户更直观地理解如何使用不同类型的变量。 2. 增加对环境变量的详细说明,特别是如何在不同环境中切换和使用这些变量。 3. 在取消代理部分,建议提供更安全和可维护的方法,而不是直接修改扩展的代码。 4. 提供对常见错误和解决方案的列表,帮助用户更快地排查问题。

自定义变量

环境变量

存储不同环境的变量, 在Visual Studio代码设置文件中直接定义.

"rest-client.environmentVariables": {
    "$shared": {
        "version": "v1",
        "prodToken": "foo",
        "nonProdToken": "bar"
    },
    "local": {
        "version": "v2",
        "host": "localhost",
        "token": "{{$shared nonProdToken}}",
        "secretKey": "devSecret"
    },
    "production": {
        "host": "example.com",
        "token": "{{$shared prodToken}}",
        "secretKey" : "prodSecret"
    }
}

文件变量

表示整个http文件的值, 在http文件中定义, 只有文件范围

@hostname = api.example.com

请求变量

在http文件中定义, 定义请求变量的响应值, 作为下个请求的参数, 比如先获取token, 再请求

@baseUrl = https://example.com/api

# @name login
POST {{baseUrl}}/api/login HTTP/1.1
Content-Type: application/x-www-form-urlencoded

name=foo&password=bar

###

@authToken = {{login.response.headers.X-AuthToken}}

# @name createComment
POST {{baseUrl}}/comments HTTP/1.1
Authorization: {{authToken}}
Content-Type: application/json

{
    "content": "fake content"
}

###

@commentId = {{createComment.response.body.$.id}}

# @name getCreatedComment
GET {{baseUrl}}/comments/{{commentId}} HTTP/1.1
Authorization: {{authToken}}

###

# @name getReplies
GET {{baseUrl}}/comments/{{commentId}}/replies HTTP/1.1
Accept: application/xml

###

# @name getFirstReply
GET {{baseUrl}}/comments/{{commentId}}/replies/{{getReplies.response.body.//reply[1]/@id}}

提示变量

发送请求时 要求用户输入使用的变量

# @prompt text 请求时弹框提示输入文本
GET https://127.0.0.1/test

{
    "text": "{{text}}",
}

内置变量

{{$guid}}
{{$randomInt min max}}
{{$timestamp [offset option]}}

{{$datetime}} 时间戳
{{$datetime -3 h}} 3小时前
{{$datetime 2 d}} 2天后

{{$datetime rfc1123|iso8601 [offset option]}}

{{$datetime rfc1123}}       Wed, 16 Apr 2025 06:23:49 GMT
{{$datetime iso8601}}       2025-04-16T06:24:53.379Z
{{$datetime 'YYYY-MM-DD'}}  2025-04-16

{{$localDatetime rfc1123|iso8601 [offset option]}}
使用本地时区
{{$localDatetime rfc1123}}       Wed, 16 Apr 2025 06:23:49 GMT
{{$localDatetime iso8601}}       2025-04-16T14:25:57+08:00
{{$localDatetime 'YYYY-MM-DD'}}  2025-04-16

{{$processEnv [%]envVarName}}
envVarName: 指定本地机器环境变量
%: 可选, 制定时, 将envVarName视为扩展设置环境变量, 并将其值用于查找.

{{$processEnv PATH}} PATH环境变量


{{$dotenv [%]variableName}}
返回.env文件中设置的环境变量, .env文件与.http文件在统一目录中

.env变量定义格式
VAR1=ABC

{{$aadToken [new] [public|cn|de|us|ppe] [<domain|tenantId>] [aud:<domain|tenantId>]}}

{{$oidcAccessToken  [new]  [<clientId:<clientId>] [<callbackPort:<callbackPort>] [authorizeEndpoint:<authorizeEndpoint}] [tokenEndpoint:<tokenEndpoint}] [scopes:<scopes}] [audience:<audience}]}

取消代理

因为VSCode配置了代理, 而用rest-client时 基本上不要代理, 又没有关代理的配置 虽然rest-client提供了excludeHostsForProxy配置, 但是经常性要加新域名, 已配置近30个了

可以修改以下文件: c:\Users\Administrator.vscode\extensions\humao.rest-client-0.25.1\dist\extension.js

修改获取代理配置, 改名, 让找不到代理配置即可 workspace.getConfiguration("http") -> workspace.getConfiguration("http1")

不过环境变量如果配置了http.proxy, 应该还能用, 未测试.

相关链接

vscode-restclient