我在一个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的方法。上面的链接放到