怎么确认 REST Client 插件装对了
VS Code 扩展市场搜 “REST Client” 会跳出一堆同名选手,正主只有一个:作者是 Huachao Mao、ID 是 humao.rest-client。装之前看一眼详情页的 “Publisher” 字段,不是 humao 的都别点安装。这个插件安装量早就破 700 万了,更新日志还活跃到 2026 年 4 月,基本不会有错。
装完别急着用,先重载窗口:按 Ctrl+Shift+P(macOS 是 Cmd+Shift+P),输入 Developer: Reload Window 执行。不重载的话,右下角没有 HTTP 图标,.http 文件也不会有语法高亮和 Send Request 命令。
如果重载后还是没反应,可以这样排查:
- 打开命令面板搜
REST Client: Switch Environment,能调出来说明插件已经加载了。 - 在 Extensions 页面搜索
rest-client,确认状态是 “Enabled”,别是被其他插件禁用了。 - 别手动下载
.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}} 这类响应提取语法,前提是上一个请求已经成功执行,并且你手动点击了右上角的小磁盘图标 Sa ve Response——否则变量就是空的。提取路径用的是 $.(JSONPath 简写),不是 JS 对象访问语法 response.body.id。
最容易忽略的是作用域:文件内 @ 定义只对当前 ### 块生效;工作区配置的环境变量需要通过命令面板手动切换(REST Client: Switch Environment),不会自动读取。
