Postman里怎么正确发送GraphQL请求?

UX俊荣 阅读 85

我最近在用Postman测试我们后端的GraphQL接口,但一直返回400错误。我查了文档说要设置Content-Type为application/json,body里放query字段,但还是不行。是不是格式写错了?

我试过这样发:

{
  "query": "{ user(id: "123") { name email } }"
}

但后端说解析失败,难道GraphQL的query不能这么写?还是Postman有特殊的设置方式?

我来解答 赞 5 收藏
二维码
手机扫码查看
2 条解答
庆玲🍀
啊,GraphQL在Postman里确实容易踩坑。我前几天刚被这个问题折磨过,分享一下我的踩坑经验。

你的格式基本是对的,但有两个常见问题需要注意:

第一,GraphQL的query字符串里如果有双引号,需要转义或者改用单引号。你现在的写法会导致JSON解析错误。建议改成这样:

{
"query": "{ user(id: "123") { name email } }"
}


或者更推荐用单引号(GraphQL支持单引号):
{
"query": "{ user(id: '123') { name email } }"
}


第二,Postman有几个关键设置必须做对:
1. 请求方法必须是POST(虽然GraphQL规范说GET也可以,但很多后端只支持POST)
2. Headers里要加:
Content-Type: application/json
3. 在Body选项卡选择"raw",然后选JSON格式

另外有个小技巧,GraphQL的query可以格式化得好看点,像这样:
{
"query": "query GetUser {
user(id: "123") {
name
email
}
}"
}


这样写有几个好处:
- 可读性更好
- 可以给查询命名(GetUser)
- 方便后面加变量参数

如果还是不行,可以试试在query前面加个"operationName"字段:
{
"operationName": "GetUser",
"query": "query GetUser {
user(id: "123") {
name
email
}
}"
}


有时候后端会根据operationName做不同的处理。

最后说个坑,如果你要传变量,格式是这样的:
{
"query": "query GetUser($userId: ID!) {
user(id: $userId) {
name
email
}
}",
"variables": {
"userId": "123"
}
}


400错误大部分时候就是JSON格式不对或者query语法有问题,建议先用在线JSON校验工具检查下你的请求体。
点赞
2026-03-09 05:05
司马静薇
你把query里的双引号转义了没?Postman里body选raw + JSON,这么写就行了:

{
"query": "{ user(id: "123") { name email } }"
}


或者干脆用变量避免转义麻烦:

{
"query": "{ user(id: "123") { name email } }",
"variables": {}
}
点赞 2
2026-02-27 13:00