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>
当我尝试从客户端连接时出现以下错误:
求助分辨率请多多指教。
我还有几个问题:
- 我应该使用
SimpleGraphQLHttpServlet
将请求路由到端点吗?
- 我在 React UI 上使用
apollo-client
那么它是否必须使用 apollo-server
或 spring-boot 才能工作? spring-boot 端有任何特定的定制吗?
- 如果我在 spring-boot 应用程序中有多个解析器,那么我该如何解析对特定解析器的请求?
- 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
- 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-server
、 graphql-java
或任何语言实现服务器并不重要。
- 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)。
我有一个示例 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>
当我尝试从客户端连接时出现以下错误:
求助分辨率请多多指教。
我还有几个问题:
- 我应该使用
SimpleGraphQLHttpServlet
将请求路由到端点吗? - 我在 React UI 上使用
apollo-client
那么它是否必须使用apollo-server
或 spring-boot 才能工作? spring-boot 端有任何特定的定制吗? - 如果我在 spring-boot 应用程序中有多个解析器,那么我该如何解析对特定解析器的请求?
- 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
- 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-server
、 graphql-java
或任何语言实现服务器并不重要。
- 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)。