簡體   English   中英

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. 我應該使用 SimpleGraphQLHttpServlet 將請求路由到端點嗎?

只有一個 GraphQL 端點,所以不需要路由請求。 您需要讓服務器在 URL(通常是/graphQL )處監聽 GraphQL 請求。 這相當於以標准的 Java 方式實現一個Servlet監聽這個 URL。 SimpleGraphQLHttpServlet是來自graphql-java-servlet的 Servlet 實現之一,如果您不想自己實現它。 如果您使用的是 Spring,另一種選擇是graphql-java-spring

  1. 我在 React UI 上使用 apollo-client,所以是否強制使用 apollo-server 或 spring-boot 可以工作? spring-boot 方面的任何特定定制?

假設您僅使用符合 GraphQL 規范的 GraphQL 功能, apollo-client應該與任何 GraphQL 服務器一起使用。 因此,使用apollo-servergraphql-java或任何語言實現服務器都沒有關系。

  1. 如果我在 spring-boot 應用程序中有多個解析器,那么如何解決對特定解析器的請求?

每個 GraphQL 類型中的每個字段都應該配置一個解析器來解析其值。 每個 GraphQL 查詢將從根查詢/變異/訂閱類型的字段開始解析。在graphql-java中,您可以通過配置TypeRuntimeWiringWiringFactory來配置使用哪個解析器的類型的字段(有關更多詳細信息,請參閱內容)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM