удаление простым графом-java-сервлета SimpleGraphQLServlet - PullRequest
0 голосов
/ 03 октября 2018

В старой версии graphql-java-servlet я использовал расширение SimpleGraphQLServlet, а затем переопределил GraphQLContext createContext (необязательный запрос, необязательный ответ), чтобы добавить файл cookie в ответ.Я бы также переопределил GraphQLErrorHandler getGraphQLErrorHandler (), чтобы выполнить пользовательскую обработку ошибок.

Я сейчас пытаюсь сделать большой переход в версии к graphql-java-servlet 6.x.Начиная с graphql-java-servlet 6.x, SimpleGraphQLServlet исчез.Теперь есть SimpleGraphQLHttpServlet, который я не могу использовать напрямую.

К сожалению, однако, документация по github устарела и все еще предлагает использовать SimpleGraphQLServlet, хотя он давно ушел.Есть некоторые сборщики, и я могу найти некоторые очень упрощенные ссылки вне документации github, но ни один из них не покрывает мои варианты использования.

Я не хочу делать что-то причудливое, но мне нужно уметьдобавьте cookie к ответу и выполните некоторую настраиваемую обработку ошибок.

Как я могу сделать это в graphql-java-servlet 6.x?Кажется, я не могу найти ясности в этом.

1 Ответ

0 голосов
/ 05 октября 2018

Существует GraphQLServletListener .Это также описано в документах проекта , хотя это немного не так (в коде нет OperationCallback).

В любом случае, вот рабочий фрагмент кода (используется com.graphql-java-kickstart:graphql-java-servlet:6.1.4):

    GraphQLSchema schema = getSchema();
    List<GraphQLServletListener> listeners = new ArrayList<GraphQLServletListener>();
    GraphQLServletListener lstnr = new GraphQLServletListener(){

        public RequestCallback onRequest(HttpServletRequest request, HttpServletResponse response) {
            System.out.println("onRequest:" + request.getRequestURI());
            //TODO cookies here
            response.addCookie(new Cookie("sample","test"));

            return new RequestCallback() {

                @Override
                public void onSuccess(HttpServletRequest request, HttpServletResponse response) {
                    System.out.println("onSuccess:" + request.getRequestURI());
                }

                @Override
                public void onError(HttpServletRequest request, HttpServletResponse response, Throwable throwable) {
                    //TODO add some error handling here
                    System.out.println("onError:" + request.getRequestURI());
                }

                @Override
                public void onFinally(HttpServletRequest request, HttpServletResponse response) {
                    System.out.println("onFinally:" + request.getRequestURI());
                }

            };
        }
    };
    listeners.add(lstnr);

    SimpleGraphQLHttpServlet servlet = SimpleGraphQLHttpServlet.newBuilder(schema)
        .withListeners(listeners)
        .build();
...