Mercurius exhibits the following behaviour when serving GraphQL over HTTP.
Mercurius has the following default behaviour for HTTP Status Codes.
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
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
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
)
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
)
If you wish to customise the default HTTP Status Code behaviour, one can do this using the errorFormatter
option.