装对插件、保存为.http后缀、首行写对请求格式三者缺一不可,否则ctrl+alt+r/cmd+alt+r无法触发发送;需认准作者huachao mao、id humao.rest-client的官方插件,安装后必须重载窗口,且文件须为已保存的.http/.rest类型,首行须为顶格、无注释、协议完整的合法请求行。

装对插件、保存为.http后缀、首行写对请求格式,三者缺一不可——否则Ctrl+Alt+R(Windows/Linux)或Cmd+Alt+R(macOS)根本不会触发发送。
怎么确认 REST Client 插件装对了
VS Code 扩展市场搜 “REST Client” 会出现多个同名插件,必须认准作者是 Huachao Mao、ID 是 humao.rest-client 的那个。安装量超 700 万、更新日志活跃到 2026 年 4 月的是正主;点进去看详情页的 “Publisher” 字段,不是 humao 的都别点安装。
装完必须重载窗口:按 Ctrl+Shift+P(macOS 是 Cmd+Shift+P),输入 Developer: Reload Window 并执行。不 reload,右下角不会出现 HTTP 图标,.http 文件也不会有语法高亮和 Send Request 命令。
如果重载后仍无反应:
- 打开命令面板搜
REST Client: Switch Environment,能调出来就说明插件已加载 - 检查是否被其他插件禁用:在 Extensions 页面搜索
rest-client,确认状态是 “Enabled”,不是 “Disabled by another extension” - 别手动下载
.vsix安装——VSCode 1.80+ 对未签名插件限制变严,容易卡在 “Installing…” 或报签名校验失败
为什么 .http 文件里点 Send Request 没反应
90% 是文件没被识别为 HTTP 类型。REST Client 只响应后缀为 .http 或 .rest 的**已保存文件**。临时文件、.txt、.md、甚至无后缀的文件,快捷键和右键菜单都不会出现。
即使后缀对了,第一行也必须是合法请求行:顶格写、无注释、无空格缩进、协议完整(https:// 不能少)、不能加引号。下面这些全错:
GET"https://api.example.com/users" GET https://api.example.com/users // GET https://api.example.com/users GET https://api.example.com/users?name=张三
正确写法只有一种:GET https://api.example.com/users?name=%E5%BC%A0%E4%B8%89(中文要 URL 编码,别用 +)。
Windows 用户注意换行符:必须是 LF(Unix 风格),不是 CRLF;否则可能报 Invalid request line。
光标必须停在请求块内——不能在空行、注释行、或 ### 分隔符上。
用了 {{var}} 却没定义变量?它不会报错,而是静默失败,请求发不出。
怎么写一个带 JSON body 和 Authorization 的 POST 请求
结构必须严格遵循 “请求行 → 请求头 → 空行 → body”:
- Header 和 Body 之间必须且仅有一个空行;多一个或少一个都会让 Body 被当成 Header 解析
-
Content-Type: application/json必须显式写出,缺省时默认是text/plain,很多后端直接拒收 - JSON Body 必须顶格写,不能缩进,且所有字符串键和值都得用英文双引号,例如
{"name":"alice"},不能用单引号或中文引号 - Body 里不能出现未转义的换行或制表符;如果复制自 AI 输出,注意检查是否混入了不可见字符
正确示例:
POST https://httpbin.org/post
Content-Type: application/json
Authorization: Bearer {{token}}
{"name":"alice","age":30}
变量怎么定义才生效、为什么 {{response.body.$.id}} 提取不到
变量分三种,优先级:文件内 @var = > 工作区 rest-client.environmentVariables > 全局 .rest-client 文件。变量名不能含点号或中划线,比如 @api.v1 或 @auth-token 会解析失败,只能用下划线或纯字母数字。
不支持嵌套引用:@base = https://api.example.com 可以,但 @url = {{base}}/users 会报错 “variable not found”。
{{response.body.$.id}} 这类响应提取语法,前提是上一个请求已成功执行,并且你手动点了右上角小磁盘图标 Save Response——否则变量为空。提取路径用的是 $.(JSONPath 简写),不是 JS 对象访问语法 response.body.id。
最容易被忽略的是作用域:文件内 @ 定义只在当前 ### 块生效;工作区配置的环境变量需通过命令面板手动切换(REST Client: Switch Environment),不会自动读取。











