vscode 的 rest client 插件通过 .http/.rest 文件用类 markdown 语法发 http 请求,需显式声明头信息、正确使用变量(仅请求行和 header 展开)、配置超时与响应限制,并借助分层变量和 @import 实现多环境安全切换。

VSCode 的 REST Client 插件不是“写代码”,而是用类 Markdown 的纯文本语法直接发 HTTP 请求——它不依赖前端环境或后端服务启动,适合快速验证 API、调试微服务间调用、做自动化测试前置检查。
HTTP 请求文件怎么命名和保存
REST Client 只识别 .http 或 .rest 后缀的文件。不能用 .txt 或 .md 伪装,否则点击 “Send Request” 按钮会无响应。
- 推荐统一用
.http,社区生态和语法高亮更成熟 - 文件可放在任意目录,但路径含中文或空格时,部分版本(如 v0.26.x)会触发
RequestError: Error: getaddrinfo ENOTFOUND - 如果请求里引用了本地变量(比如
{{host}}),必须把变量定义写在**同一文件顶部**,或通过@import加载外部.env文件(注意:不是 Node.js 的.env,而是 REST Client 自定义的键值对格式)
GET/POST 请求怎么写才不报 400 或 401
常见错误不是 URL 写错,而是头信息缺失或格式不匹配。REST Client 默认不带任何 Content-Type 或 Authorization,必须显式声明。
- GET 带查询参数:直接拼在 URL 后,或用
?+ 换行 + 参数块(需加###分隔) - POST 发 JSON:必须写
Content-Type: application/json,且 body 要顶格写,不能缩进(缩进会被当成字符串字面量) - Bearer Token 认证:写成
Authorization: Bearer {{token}},其中{{token}}可来自文件顶部变量、系统环境变量(env.TOKEN),或手动粘贴 - 表单提交(
application/x-www-form-urlencoded):body 用key1=value1&key2=value2格式,不能换行,也不能用 JSON
如何复用请求并避免硬编码
硬编码 URL、Token、ID 是最常导致“本地能跑、CI 失败”的原因。REST Client 提供三层变量机制,优先级从高到低:文件内定义 → @import 的 .env 文件 → 系统环境变量。
- 文件顶部定义:
@host = https://api.example.com,然后请求中写GET {{host}}/users -
@import外部变量文件:@import "./config.env",其中config.env内容为TOKEN = abc123(等号两侧不能有空格) - 动态值如时间戳,可用内置函数:
{{now}}、{{now 'YYYY-MM-DD'}}(需开启插件设置rest-client.enableBuiltInVariables) - 注意:
{{}}变量**只在请求行和 header 中生效,不在 body 的 JSON 字符串内部展开**——想在 JSON 里用变量,得写成"id": "{{user_id}}"这种形式(即变量仍处于顶层语法解析上下文)
响应太大或超时怎么调
默认超时是 10 秒,响应体限制约 10MB。大文件下载、长轮询、流式响应(如 SSE)容易卡住或截断。
- 改超时:在请求前加注释
# @timeout = 30000(单位毫秒) - 禁用响应体限制(谨慎):设置
"rest-client.maxResponseBodySize": 0(0 表示不限制),但可能拖慢 VSCode - 查看原始响应头:响应面板点右上角
⋯ → Toggle Response Header View,确认Content-Encoding、Transfer-Encoding是否异常 - 流式响应无法被完整捕获——REST Client 是同步 HTTP 客户端,不支持 EventSource 或
text/event-stream解析,这类场景建议切到curl或专用工具
真正麻烦的从来不是怎么写一个请求,而是怎么让同一组请求在开发、测试、预发环境之间平滑切换,同时不把密钥提交进 Git——变量分层和 @import 路径管理,比语法本身更值得花时间理清楚。











