docs: document how custom error formatting works

This commit is contained in:
Sultan Iman 2018-11-01 22:25:37 +01:00
parent f76f38ef30
commit 08a42961da
2 changed files with 52 additions and 1 deletions

51
docs/custom-errors.rst Normal file
View File

@ -0,0 +1,51 @@
Custom errors
=============
Default GraphQL error format similar to the following snippet
.. code: json
{
"errors": [
{
"message": "Variable \"$myAwesomeField\" of required type \"String!\" was not provided.",
"locations": [
{
"line": 1,
"column": 13
}
]
}
]
}
And there is a way customise it by swapping default ``GraphQLView`` with your own
and then override ``format_error`` method
.. code: python
class MyGraphQLView(GraphQLView):
@staticmethod
def format_error(error) -> Dict[str, Any]:
if isinstance(error, GraphQLError):
return format_error(error)
return GraphQLView.format_error(error)
Here is custom formatting function
.. code: python
def format_error(error: GraphQLError) -> Dict[str, Any]:
"""Extract field from ``error`` and return formatted error
:param error: GraphQLError
:return: mapping of fieldName -> error message
"""
formatted_error = {
n.variable.name.value: str(error)
for n in error.nodes
}
if error.path:
formatted_error["path"] = error.path
return formatted_error

View File

@ -13,4 +13,4 @@ Contents:
debug
rest-framework
form-mutations
introspection
custom-errors