api
protocol_error
ai_generated
true
GraphQL 变更操作返回 HTTP 400,附带 errors 数组
GraphQL mutation returned HTTP 400 with errors array
ID: api/graphql-http-status-400-mutation-returned-errors
82%修复率
85%置信度
1证据数
2023-09-12首次发现
版本兼容性
| 版本 | 状态 | 引入 | 弃用 | 备注 |
|---|---|---|---|---|
| graphql-js v16.8 | active | — | — | — |
| apollo-server v4.6 | active | — | — | — |
| express-graphql v0.12 | active | — | — | — |
根因分析
GraphQL 端点会在变更操作验证或执行失败时返回 HTTP 400,即使请求本身是语法有效的 JSON。
English
GraphQL endpoint returns HTTP 400 when a mutation fails validation or execution, even though the request is syntactically valid JSON.
官方文档
https://graphql.org/learn/serving-over-http/#http-errors解决方案
-
In the client, check for errors array in response body even on 400, not just 200.
-
Use a GraphQL client like Apollo that handles non-200 responses gracefully.
无效尝试
常见但无效的做法:
-
75% 失败
The request body is usually valid JSON; the error is in the mutation logic, not parsing.
-
60% 失败
Logging alone doesn't fix the underlying mutation error; only masks symptoms.
-
80% 失败
GraphQL spec allows 400 for business logic errors; headers are irrelevant.