GraphQL 客户端服务器连接

GraphQL client server connection

我有一个示例 spring-boot 应用程序到 运行 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>

当我尝试从客户端连接时出现以下错误:

求助分辨率请多多指教。

我还有几个问题:

  1. 我应该使用 SimpleGraphQLHttpServlet 将请求路由到端点吗?
  2. 我在 React UI 上使用 apollo-client 那么它是否必须使用 apollo-server 或 spring-boot 才能工作? spring-boot 端有任何特定的定制吗?
  3. 如果我在 spring-boot 应用程序中有多个解析器,那么我该如何解析对特定解析器的请求?
  1. Should i be using SimpleGraphQLHttpServlet to route the request to the endpoint ?

只有一个 GraphQL 端点,因此无需路由请求。您需要什么才能使服务器在 URL 处侦听 GraphQL 请求,通常是 /graphQL。这等效于以标准 Java 方式实现 Servlet 侦听此 URL 。 SimpleGraphQLHttpServlet 是来自 graphql-java-servlet 的 Servlet 实现之一,如果您不想自己实现的话。如果您使用的是 Spring.

,则另一种方法是 graphql-java-spring
  1. I am using apollo-client on React UI so is it mandated to use apollo-server or spring-boot would work ? Any specific customisation on spring-boot side?

假设您只使用符合 GraphQL 规范的 GraphQL 功能,apollo-client 应该适用于任何 GraphQL 服务器。因此,使用 apollo-servergraphql-java 或任何语言实现服务器并不重要。

  1. If i have multiple resolvers in a spring-boot app then how can i resolve a request to specific resolver ?

每个 GraphQL 类型中的每个字段都应该配置一个解析器来解析它的值。每个 GraphQL 查询将从根 query/mutation/subscription type.In graphql-java 的字段开始解析,您可以通过配置 TypeRuntimeWiring 或 [=20= 配置使用哪个解析器的类型的字段](有关详细信息,请参阅 this)。