Django Graphene GraphQL настраиваем сообщения об ошибках
В моем приложении Django с Graphene for GraphQL, как мне перехватить сообщения Graphene GraphQL, чтобы я мог дезинфицировать содержимое? Я попробовал создать пользовательское представление graphql и функцию custom_execute и использовать это в определении конечной точки urlpatterns:
class CustomGraphQLView(GraphQLView):
def execute_graphql_request(self, request, data, query, variables, operation_name, show_graphiql=False):
document = parse(query)
result = custom_execute(self.schema, document, root_value=request, variable_values=variables, operation_name=operation_name)
return result
def custom_execute(schema, document, root_value=None, variable_values=None, operation_name=None, context_value=None):
# Execute the query
try:
result = execute(
schema=schema,
document=document,
root_value=root_value,
context_value=context_value,
variable_values=variable_values,
operation_name=operation_name
)
if isinstance(result, ExecutionResult):
if result.errors:
modified_errors = [GraphQLError("Custom error handling message") for error in result.errors]
result.errors = modified_errors
return result
except Exception as e:
return ExecutionResult(data=None, errors=[GraphQLError('test'), GraphQLError(str(e))])
urlpatterns = [
path('graphql', CustomGraphQLView.as_view(graphiql=not IS_PROD)),
]
Внутри функции execute
в моей функции custom_execute
я получаю ошибку: "Expected <Schema instance> to be a GraphQL schema."
Я проверил, что объект схемы имеет тип <class 'graphene.types.schema.Schema'>. Как исправить эту ошибку. Является ли это вообще рекомендуемым способом настройки сообщений об ошибках, выдаваемых graphql?