springBoot+graphql+graphiql 基础工程搭建
springBoot+graphql+graphiql 基础工程搭建
项目构建
工程目录
添加依赖:
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.2 </version>
</dependency>
<dependency>
<groupId>com.graphql-java-kickstart</groupId>
<artifactId>graphql-spring-boot-starter</artifactId>
<version>5.0.4</version>
</dependency>
<dependency>
<groupId>com.graphql-java-kickstart</groupId>
<artifactId>graphiql-spring-boot-starter</artifactId>
<version>5.0.4</version>
</dependency>
配置yml文件:
graphql:
servlet:
mapping: /graphql
enabled: true
corsEnabled: true
tools:
schemaLocationPattern: "**/*.graphqls"
graphiql:
mapping: /graphiql
endpoint:
graphql: /graphql
subscriptions: /subscriptions
static:
basePath: /
enabled: true
pageTitle: GraphiQL
cdn:
enabled: false
version: 0.11.11
props:
resources:
query: testquery.query
defaultQuery: testquery.query
variables:
editorTheme: "solarized light"
headers:
Authorization: "Bearer vdff3344ffs v"
配置GraphQL 服务
root.graphqls 服务入口文件 Query是查询入口
具体信息查看官方文档 graphql官方文档http://graphql.cn/learn/
type Query{
users: [User]
user: User
}
定义user类型字段
user.graphqls
type User{
id: Int
name: String
}
实体类
package com.example.graphQL.demo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
private int id;
private String name;
}
实现描述
package com.example.graphQL.demo;
import com.coxautodev.graphql.tools.GraphQLQueryResolver;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
@Component
@AllArgsConstructor
public class Query implements GraphQLQueryResolver {
public User getUser(){
return new User(1,"张三");
}
public List<User> getUsers(){
List<User> users = new ArrayList<>();
users.add(new User(1,"张三"));
users.add(new User(2,"李四"));
users.add(new User(3,"王五"));
return users;
}
}
运行程序
启动程序 打开 localhost:8080/graphiql