REST Client 插件不是 Postman 简化版,其所有行为由 .http 文件字面量决定;语法严格:首行必须为“METHOD URL”,Header 格式为“Key: Value”(冒号后需空格),Body 前仅一个空行,变量需以 @ 开头定义,多环境靠手动修改变量值。

REST Client 插件不是 Postman 的“简化版”,它压根不走同一套逻辑——没有集合、没有工作区环境自动注入、不保存历史请求到侧边栏,所有行为都由你写的 .http 文件字面量决定。写错一个空行、少一个 {{}}、Header 末尾多一个空格,它就静默失败或报 Invalid request method。
为什么 .http 文件一发就报 Invalid request method
这不是网络错误,是语法解析失败。REST Client 根本没开始发请求,就在本地解析阶段卡住了。
-
GET或POST必须是首行,且后面**紧接一个空格**,再跟完整 URL(必须含https://或http://);写成GEThttps://...或GET https://...(多个空格)都会挂 - Header 行不能缩进,不能用 Tab,每行必须是
Key: Value格式,:后**必须有一个空格**,Content-Type:application/json❌,Content-Type: application/json✅ - Header 和 Body 之间**只能有一个空行**,多一个少一个都不行;Body 必须顶格写,JSON 不要缩进,否则可能被当注释忽略
- 变量如
{{host}}必须提前在文件顶部用@host = https://api.dev.example.com定义,拼写、大小写、花括号缺一不可
如何安全复用变量和多环境配置
硬编码 URL 或 token 是调试中最容易泄露也最常出错的操作。REST Client 支持变量,但作用域极窄——默认只对当前 .http 文件生效,跨文件不共享。
- 单文件内定义:在文件最上方写
@baseUrl = https://api.staging.example.com,然后用GET {{baseUrl}}/users;注意@开头、无引号、无分号 - 全局变量需配合
.rest-client文件:在项目根目录新建隐藏文件.rest-client,内容为纯键值对(JSON 不支持),例如:@token = abc123<br>@timeout = 5000
,该文件会被所有同项目下的.http文件读取 - 环境切换靠手动:没有 UI 下拉菜单,改
@变量值就是切换环境;想避免误操作,建议用 VSCode 多光标 +Cmd+D同时修改多个@行 - 敏感值别提交:把
.rest-client加进.gitignore;如果必须 Git 管理,用@token = {{env.TOKEN}}配合系统环境变量,启动 VSCode 前先export TOKEN=xxx
POST 请求 Body 总是收不到?检查这三处
后端日志显示 req.body 为空,90% 不是后端问题,是 REST Client 没把内容当 Body 发出去。
- 确认是否写了空行:Header 最后一行和 Body 第一行之间必须有且仅有一个空行;没有空行 → 整块被当 Header 解析;两个空行 → Body 被截断为空
- Content-Type 必须显式声明:不写
Content-Type头时,默认是text/plain;发 JSON 一定要加Content-Type: application/json - Body 内容格式要合法:JSON 不要带 trailing comma、单引号、注释;如果不确定,先粘贴到
https://jsonlint.com验证;form-data 或 x-www-form-urlencoded 类型不支持直接写 JSON 对象,得换用-d风格(REST Client 不支持 curl 式的-d,只能用 raw body + 正确 header)
REST Client 的“轻量”是双刃剑:它不维护状态、不记录上下文、不校验语法,所有控制权都在你手写的文本里。这意味着你每次按 Cmd+Alt+R 之前,其实是在执行一段未经编译的脚本——错一个字符,结果就不可预期。真正省时间的不是少点几下鼠标,而是把请求当代码写、当代码审、当代码提交。


















