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

其他格式: JSON · Markdown 中文 · English
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.

generic

官方文档

https://graphql.org/learn/serving-over-http/#http-errors

解决方案

  1. In the client, check for errors array in response body even on 400, not just 200.
  2. Use a GraphQL client like Apollo that handles non-200 responses gracefully.

无效尝试

常见但无效的做法:

  1. 75% 失败

    The request body is usually valid JSON; the error is in the mutation logic, not parsing.

  2. 60% 失败

    Logging alone doesn't fix the underlying mutation error; only masks symptoms.

  3. 80% 失败

    GraphQL spec allows 400 for business logic errors; headers are irrelevant.