GraphQL客户端服务器连接

时间:2019-11-07 10:08:48

标签: java graphql-java

我有一个用于运行graphQL服务器的示例spring-boot应用程序,具有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. 我在React UI上使用apollo-client,所以是否强制使用apollo-server或spring-boot可以工作?在spring-boot方面有任何特定的自定义吗?
  3. 如果我在spring-boot应用程序中有多个解析器,那么我如何解析对特定解析器的请求?

1 个答案:

答案 0 :(得分:0)

  
      
  1. 我应该使用SimpleGraphQLHttpServlet将请求路由到   端点?
  2.   

只有一个GraphQL端点,因此不需要路由请求。使服务器在URL(通常为/graphQL)上侦听GraphQL请求所需的内容。这等效于以标准Java方式实现Servlet侦听此URL。如果您不想自己实现,SimpleGraphQLHttpServletgraphql-java-servlet的Servlet实现之一。如果您使用的是Spring,则为graphql-java-spring

  
      
  1. 我在React UI上使用apollo-client,所以它被强制使用   阿波罗服务器或弹簧启动将工作?任何特定的自定义   在弹簧靴侧?
  2.   

假设您仅使用符合GraphQL规范的GraphQL功能,则apollo-client应该适用于任何GraphQL服务器。因此,使用apollo-servergraphql-java或任何其他语言来实现服务器都没有关系。

  
      
  1. 如果我在spring-boot应用程序中有多个解析器,那么我如何解析对特定解析器的请求?
  2.   

每种GraphQL类型的每个字段都应配置一个解析器以供其解析其值。每个GraphQL查询都会从根查询/突变/订阅类型的字段开始解析。在graphql-java中,您可以通过配置TypeRuntimeWiringWiringFactory(有关更多详细信息,请参见this