Клиент-сервер GraphQL - PullRequest
       20

Клиент-сервер GraphQL

0 голосов
/ 07 ноября 2019

У меня есть пример приложения весенней загрузки для запуска сервера GraphQL с graphiql-java в качестве клиента, и у моего pom есть следующие зависимости:

<dependencies>
        <dependency>
            <groupId>com.graphql-java</groupId>
            <artifactId>graphql-spring-boot-autoconfigure</artifactId>
            <version>5.0.2</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/com.graphql-java/graphql-java-servlet -->
        <dependency>
            <groupId>com.graphql-java</groupId>
            <artifactId>graphql-java-servlet</artifactId>
            <version>6.1.3</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>com.graphql-java</groupId>
            <artifactId>graphiql-spring-boot-starter</artifactId>
            <version>5.0.2</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.hsqldb</groupId>
            <artifactId>hsqldb</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>com.graphql-java</groupId>
            <artifactId>graphiql-spring-boot-starter</artifactId>
            <version>5.0.2</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>com.graphql-java</groupId>
            <artifactId>graphql-spring-boot-starter</artifactId>
            <version>5.0.2</version>
        </dependency>
        <dependency>
            <groupId>com.graphql-java</groupId>
            <artifactId>graphql-java-tools</artifactId>
            <version>4.3.0</version>
        </dependency>
    </dependencies>

Когда я пытаюсь подключиться с клиента, я получаю следующую ошибку:

enter image description here

Разрешение на охоту любезно предлагаем.

У меня есть еще пара вопросов:

  1. Должен ли я использовать SimpleGraphQLHttpServlet для маршрутизации запроса к конечной точке?
  2. Я использую apollo-client в интерфейсе React, поэтому он должен использовать apollo-server, или Spring-Boot будет работать? Любая конкретная настройка на стороне весенней загрузки?
  3. Если у меня есть несколько распознавателей в приложении весенней загрузки, то как я могу разрешить запрос к определенному распознавателю?

1 Ответ

0 голосов
/ 10 ноября 2019
  1. Должен ли я использовать SimpleGraphQLHttpServlet для направления запроса к конечной точке?

Существует только одна конечная точка GraphQL, поэтому нет необходимости направлять запрос,Что нужно, чтобы сервер прослушивал запрос GraphQL по URL-адресу, обычно /graphQL. Это эквивалентно реализации Servlet прослушивания этого URL стандартным способом Java. SimpleGraphQLHttpServlet - это одна из реализаций сервлета из graphql-java-servlet, если вы не хотите реализовывать ее самостоятельно. Альтернативой является graphql-java-spring, если вы используете Spring.

Я использую apollo-client в пользовательском интерфейсе React, поэтому он должен использовать apollo-server, или будет работать spring-boot? Любая конкретная настройка на стороне весенней загрузки?

При условии, что вы используете только функции GraphQL, которые соответствуют спецификации GraphQL, apollo-client должен работать с любыми серверами GraphQL. Поэтому не имеет значения, что сервер реализован с использованием apollo-server, graphql-java или любых других языков.

Если у меня есть несколько распознавателей в приложении с весенней загрузкой, то как я могу разрешить запрос к определенному распознавателю?

Для каждого поля в каждом типе GraphQL должен быть настроен распознаватель для нихрешить его значение. Каждый запрос GraphQL будет начинаться с поля типа корневого запроса / мутации / подписки. В graphql-java вы можете настроить поле типа, используя какой преобразователь, настроив TypeRuntimeWiring или WiringFactory (см. this для более подробной информации).

...