413 api resource_error ai_generated true

GraphQL HTTP 413: Query payload too large

ID: api/graphql-http-413-payload-too-large-query

Also available as: JSON · Markdown · 中文
80%Fix Rate
86%Confidence
1Evidence
2024-01-15First Seen

Version Compatibility

VersionStatusIntroducedDeprecatedNotes
Apollo Server 4.x active
Express 4.18+ active
NGINX 1.24+ active
GraphQL Yoga 3.x active
AWS API Gateway 2023+ active

Root Cause

GraphQL query or mutation body exceeds the HTTP request body size limit configured on the server (e.g., 1 MB default in Express/NGINX).

generic

中文

GraphQL 查询或变更主体超过了服务器配置的 HTTP 请求体大小限制(例如 Express/NGINX 中的默认 1 MB)。

Official Documentation

https://www.apollographql.com/docs/apollo-server/performance/limits/#request-body-size

Workarounds

  1. 90% success Increase the body size limit in Express middleware: const express = require('express'); const app = express(); app.use(express.json({ limit: '10mb' })); // Increase to 10 MB If using Apollo Server with Express, apply this before the Apollo middleware.
    Increase the body size limit in Express middleware:
    const express = require('express');
    const app = express();
    app.use(express.json({ limit: '10mb' })); // Increase to 10 MB
    If using Apollo Server with Express, apply this before the Apollo middleware.
  2. 85% success If using NGINX as a reverse proxy, increase client_max_body_size in the server block: server { client_max_body_size 10m; ... }
    If using NGINX as a reverse proxy, increase client_max_body_size in the server block:
    server {
        client_max_body_size 10m;
        ...
    }

中文步骤

  1. Increase the body size limit in Express middleware:
    const express = require('express');
    const app = express();
    app.use(express.json({ limit: '10mb' })); // Increase to 10 MB
    If using Apollo Server with Express, apply this before the Apollo middleware.
  2. If using NGINX as a reverse proxy, increase client_max_body_size in the server block:
    server {
        client_max_body_size 10m;
        ...
    }

Dead Ends

Common approaches that don't work:

  1. 60% fail

    The body size limit is checked before query parsing.

  2. 40% fail

    GET requests have their own size limits (e.g., 8 KB for most servers) and are not suitable for large queries.