Spring Boot GraphQL @QueryMapping未被调用



我在一个spring引导项目中设置graphql时遇到了一些麻烦,我想为任何试图设置graphql的人制作一个检查清单。我的答案在下面:

步骤:

添加graphql依赖项:

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-graphql</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

创建.graphqls文件:

  • 创建至少一个"type Query">
  • 创建至少一个"类型";您的对象名称"
  • 应该放在src/main/resources/graphql
type Query {
myQuery(firstName: String): Obj
}
type Obj {
name: String
description: String
}

创建对象
  • 创建一个对象,其成员的名称与您在.graphqls文件
  • 中定义的对象的名称相匹配。
public class Obj
{
private String name;
private String description; 

...
}

创建控制器
  • 创建带有@Controller注释的类
  • 用@QueryMapping注释在类中添加方法
  • 如果需要,在方法参数
  • 中添加@Argument注释
  • 确保.graphqls文件中的查询名称与方法名称
  • 匹配
  • 确保方法参数名与.graphqls文件中的查询参数匹配

import org.springframework.graphql.data.method.annotation.Argument;
import org.springframework.graphql.data.method.annotation.QueryMapping;
import org.springframework.stereotype.Controller;

@Controller
public class AttractionsGraphql {
private final DAO yourDatabaseAccessObject;
@QueryMapping
public Obj myQuery(@Argument String firstName) {
return yourDatabaseAccessObject.getObj(firstName);
}
}

将其添加到应用程序中。属性文件使用graphql UI调用端点:

spring.graphql.graphiql.enabled=true

启动你的应用程序,你可以用图形界面在http://localhost:8080/graphiql?path=/graphql测试你的端点。

在查询窗口中按[shift + space]你可以看到你可以从你的模式中得到什么可能的参数。下面是一个查询示例:

query whateverName {
myQuery (firstName: "bob") {
name
description

}
}

希望这对你有帮助!这两个网站帮我解决了这个问题:

  • https://www.baeldung.com/spring-graphql
  • https://spring.io/guides/gs/graphql-server/

如果你的对象有一个嵌套的对象,你需要在你的控制器中创建一个带有@SchemaMapping的方法。上面的链接放到

最新更新