Ответ может содержать data и массив errors с message, опционально locations, path, extensions; частичный успех возможен: часть полей null + errors.
Разбор
- HTTP 200 при GraphQL errors — норма для многих серверов (спорно, но распространённо).
extensions.code помогает клиентам классифицировать ошибки.
- Не кладите стеки в прод-ответы.
- Различайте validation errors и resolver errors.
Пример
{
"data": { "user": null },
"errors": [{ "message": "Not found", "path": ["user"] }]
}
Итог
Ошибки — массив errors рядом с data, часто с частичным результатом.