Postman发GraphQL请求必须选GraphQL类型而非raw或form-data,Query和Variables需分开放置且变量名大小写、类型须与Schema严格一致,环境变量仅支持嵌入Variables中。

GraphQL 请求体必须选 GraphQL 类型,不是 raw 或 form-data
Postman 里发 GraphQL 查询,Body 标签页下必须手动切换到 GraphQL 选项卡,否则后端收不到变量或直接报错 400 Bad Request。很多人误以为用 raw + JSON 就行,但那是普通 REST 接口的写法;GraphQL 协议要求服务端通过特定字段解析查询和变量,Postman 的 GraphQL 模式会自动组织成标准格式:{"query":"...", "variables":{...}}。
常见错误现象:
- 选了
raw并粘贴了带variables的 JSON → 后端返回"query string is required"或空响应 - 选了
x-www-form-urlencoded→ 报415 Unsupported Media Type - 没填
Query区域,只在GraphQL Variables填了值 → 查询不执行,无报错但响应为空数组
Query 区域写查询语句,Variables 区域写变量对象(JSON 格式)
Query 和 GraphQL Variables 是两个独立输入框,不能混写。Postman 不会自动把 Variables 里的字段塞进 Query 字符串里 —— 它靠 GraphQL 协议本身的变量占位机制联动。
例如后端定义了这个查询:
query RecentPosts($count: Int!, $offset: Int) {
recentPosts(count: $count, offset: $offset) {
id
title
}
}
那么你必须:
Postman 12.27.7 Windows x64 官方安装包,适用于 API 设计、调试、测试与协作。该系列包含 Enterprise 云端性能测试静态 IP 出口能力,以及接口规范标签管理改进,适合受限网络测试与规范资源组织场景。
- 在
Query区域完整粘贴上面那段(含$count、$offset占位符) - 在
GraphQL Variables区域填纯 JSON 对象:{"count": 5, "offset": 0} - 变量名、类型、是否非空(
!)必须和服务端 Schema 严格一致,否则报"Variable \"$xxx\" of required type \"YYY!\" was not provided"
环境变量可嵌入 Variables,但不能直接写在 Query 字符串里
如果你用 Postman 环境变量(比如 {{api_base_url}} ),它只能用于 URL 或 Headers,不能直接插进 Query 区域当字符串拼接用 —— 那会破坏 GraphQL 语法结构,导致解析失败。
但你可以把环境变量用在 GraphQL Variables 里,只要它是合法 JSON 值:
- 定义环境变量
limit_num = 10 - 在
GraphQL Variables中写:{"count": {{limit_num}}, "offset": 0} - 注意:这里
{{limit_num}}会被替换成数字10,不是字符串"10";如果后端期望字符串类型,就得改环境变量值为"10"并加引号
调试时优先检查 Network 面板里的真实请求体
Postman 的界面显示容易让人误判实际发出的内容。真正决定后端行为的是它最终发出去的 HTTP Body。遇到变量不生效、查询返回空、类型报错等情况,务必打开 Postman 右上角 View → Show Postman Console,看「Request Body」原始内容:
- 确认
query字段是完整字符串(含换行和缩进没关系) - 确认
variables是合法 JSON,没有多逗号、单引号、未转义双引号 - 确认整个 payload 是 JSON 格式,不是纯文本或 form-data 分界线
最常被忽略的一点:GraphQL 变量字段名大小写敏感,{"Count": 5} 和 {"count": 5} 在 Schema 要求小写时,前者等于没传。










