必须安装作者Huachao Mao、ID humao.rest-client的正版插件,文件保存为.http/.rest后缀,首行顶格写合法请求行(如GET https://),三者缺一不可,否则Ctrl+Alt+R无效。

REST Client 扩展没装对,请求根本发不出去
VSCode 本身不带 HTTP 客户端,REST Client 是第三方扩展,必须手动安装。搜不到或按 Ctrl+Alt+R 没反应,八成是没装、装错(比如装了 Thunder Client 却以为是它)、或被禁用。
- 打开 VSCode 扩展市场,搜
REST Client,认准作者是Huachao Mao - 安装后不用重启,新建一个文件,后缀必须是
.http或.rest(.txt或.md不行) - 如果快捷键冲突(比如和 Thunder Client 都绑了
Ctrl+Alt+R),进设置搜keybindings,删掉重复项 - 扩展不依赖 Node.js 运行时,纯前端执行,所以即使 Node 服务没跑,也能发请求——但收不到响应
.http 文件格式错一个空行,就报 “Invalid request”
REST Client 对格式极其敏感,错误信息只说 “Invalid request”,不提示哪一行错。最常踩的坑就三处:
- 请求行(如
GET http://localhost:3000/users)和 headers 之间必须且仅有一个空行 - 每个 header 必须写成
Content-Type: application/json形式,冒号后建议加空格;Authorization:Bearer xxx(无空格)大概率失败 - body 必须在 headers 下方第二个空行之后;JSON 不要加引号、不要写
// 注释,否则整个 body 被当 header 解析
正确示例:
GET http://localhost:3000/api/posts
Accept: application/json
<p>{
"id": 1
}环境变量硬编码 localhost,一提交就炸生产库
把 http://localhost:3000 写死在 .http 文件里,等于给 CI/CD 埋雷。切环境时漏改一处,测试请求直奔生产 API。
- 项目根目录建
.rest-client(无扩展名),放公共变量:@baseUrl = http://localhost:3000 - 不同环境建独立文件,如
env.dev.http和env.prod.http,只存@token、@apiKey等敏感值 - 主测试文件里用
### @include env.dev.http引入,再写请求:GET {{baseUrl}}/users -
.rest-client和env.*.http都应加入.gitignore,避免密钥泄露
想边发请求边看 Node 断点,得配 launch.json
REST Client 只负责发请求,不参与调试。想在 Express 路由里打个断点、看 req.body 长什么样,必须让 VSCode 的 Node 调试器接管进程。
- 确保项目根目录有
.vscode/launch.json,配置type: "node"、request: "launch"、program指向你的启动文件(如app.js或bin/www) - 启动调试(
F5),等控制台输出Server running on...后,再用 REST Client 发请求,执行就会停在断点 - 如果用
nodemon,launch.json中request得设为"attach",先运行nodemon --inspect,再在 VSCode 里选进程附加 - 注意:REST Client 不自动携带
Set-Cookie,登录态链式调用(如 POST 登录 → 提取 token → GET /profile)得靠{{login.response.body.token}}手动提取,不能依赖会话维持
真正卡住人的不是语法或配置,而是变量分层没理清、空行多一个少一个、或者调试器和 REST Client 没在同一个端口上跑通——这些地方一错,整个闭环就断了。


















