mercurius
January 20, 2024 ยท View on GitHub
Mercurius exhibits the following behaviour when serving GraphQL over HTTP.
HTTP Status Codes
Default behaviour
Mercurius has the following default behaviour for HTTP Status Codes.
Response with data
When a GraphQL response contains data that is defined, the HTTP Status Code is 200 OK.
- HTTP Status Code:
200 OK - Data:
!== null - Errors:
N/A
Invalid input document
When a GraphQL input document is invalid and fails GraphQL validation, the HTTP Status Code is 400 Bad Request.
- HTTP Status Code:
400 Bad Request - Data:
null - Errors:
MER_ERR_GQL_VALIDATION
Response with errors
When a GraphQL response contains errors, the HTTP Status Code is 200 OK as defined in the GraphQL Over HTTP
Specification.
- HTTP Status Code:
200 OK - Data:
null - Errors:
Array<GraphQLError>(.length >= 1)
Single error with statusCode property
When a GraphQL response contains a single error with the statusCode property set and no data, the HTTP Status Code is set to this value. See ErrorWithProps for more details.
- HTTP Status Code:
Error statusCode - Data:
null - Errors:
Array<GraphQLError>(.length === 1)
Custom behaviour
If you wish to customise the default HTTP Status Code behaviour, one can do this using the errorFormatter option.