api protocol_error ai_generated true

GraphQL mutation returned HTTP 400 with errors array

ID: api/graphql-http-status-400-mutation-returned-errors

Also available as: JSON · Markdown · 中文
82%Fix Rate
85%Confidence
1Evidence
2023-09-12First Seen

Version Compatibility

VersionStatusIntroducedDeprecatedNotes
graphql-js v16.8 active
apollo-server v4.6 active
express-graphql v0.12 active

Root Cause

GraphQL endpoint returns HTTP 400 when a mutation fails validation or execution, even though the request is syntactically valid JSON.

generic

中文

GraphQL 端点会在变更操作验证或执行失败时返回 HTTP 400,即使请求本身是语法有效的 JSON。

Official Documentation

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

Workarounds

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

中文步骤

  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.

Dead Ends

Common approaches that don't work:

  1. 75% fail

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

  2. 60% fail

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

  3. 80% fail

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