Обработка ошибок с помощью graphql- java -tools и graphql-spring-boot-starter - PullRequest
1 голос
/ 29 мая 2020

Как обрабатывать ошибки в моем API-интерфейсе graphQL? Я использую graphql- java -tools и graphql-spring-boot-starter. Я создал обработчик ошибок, но каждый раз получаю ответ 200, даже если было создано исключение. Не могли бы вы сказать мне, как мне установить в ответ код ошибки, например 400?

@Component
public class CustomGraphQLErrorHandler implements GraphQLErrorHandler {

    @Override
    public List<GraphQLError> processErrors(List<GraphQLError> list) {
        return list.stream().map(this::getNested).collect(Collectors.toList());
    }

    private GraphQLError getNested(GraphQLError error) {
        if (error instanceof ExceptionWhileDataFetching) {
            ExceptionWhileDataFetching exceptionError = (ExceptionWhileDataFetching) error;
            if (exceptionError.getException() instanceof GraphQLError) {
                return (GraphQLError) exceptionError.getException();
            }
        }
        return error;
    }
}

1 Ответ

1 голос
/ 02 июня 2020

Сервер GraphQL возвращает HTTP 200, когда он может принять запрос (синтаксис действителен, сервер работает ...).

Если возникает ошибка, он возвращает 200 и заполняет ошибки list в ответе.

Итак, на стороне клиента будет:

  • Технические ошибки сервера, если статус HTTP отличается от 200
  • Ошибки при обработка запроса (технического или нет), если статус HTTP равен 200, а список ошибок не пуст
  • Нет ошибок, если статус HTTP равен 200 и список ошибок отсутствует (он не должен присутствовать и быть пустым , согласно GraphQL spe c)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...