graphql优缺点
在正式使用之前您需要了解
graphQL java实现资料
www.jianshu.com/p/4ede220b7… s10 juejin.cn/post/684490… 三分钟介绍GraphQL
官网资料: 官网查看 graphql.github.io/learn/
grapql 示例demo见下方
介绍
GraphQL Java是GraphQL的Java(服务器)实现。GraphQL Java Github org中有几个Git仓库。其中最重要的一个是GraphQL Java 引擎,它是其他所有东西的基础。
GraphQL Java引擎本身只关心执行查询。它不处理任何HTTP或JSON相关主题。因此,我们将使用GraphQL Java Spring Boot adapter,它通过Spring Boot在HTTP上暴露API。
1. 不同domain创建自己 graphql 【作者author 模板,书模板】
author.graphqls, 定义输入和输出 key
type Author {
id: ID!
name: String!
age: Int
}
input CreateAuthorInput {
name: String!
age: Int!
}
#tutorial.graphqls 定义
type Tutorial {
id: ID!
title: String!
description: String
author: Author
}
input CreateTutorialInput {
title: String!
description: String!
authorId: ID!
}
input UpdateTutorialInput {
title: String
description: String
}
type Query {
# Author
findAllAuthors: [Author]!
findAuthorById(id: ID!): Author
countAuthors: Int!
# Tutorial
findAllTutorials: [Tutorial]!
findTutorialById(id: ID!): Tutorial
countTutorials: Int!
}
Mutation-mutation.graphqls- 定义增删改方法
type Mutation {
# Author
createAuthor(createAuthorInput: CreateAuthorInput!): Author!
# Tutorial
createTutorial(createTutorialInput: CreateTutorialInput!): Tutorial!
updateTutorial(id: ID!, updateTutorialInput: UpdateTutorialInput): Tutorial!
deleteTutorial(id: ID!): Boolean
}
在 GraphQL 中分为两个大类,所有的查询入口在 Query,
所有的变更入口都在 Mutation
实现GraphQL Root 解析器-GraphQLMutationResolver 具体类似controller的实现
如下面文件 TutorialMutationResolver 实现了对 Tutorial 的变更请求处理
@Component
public class TutorialMutationResolver implements GraphQLMutationResolver {
@Autowired
private TutorialService tutorialService;
public Tutorial createTutorial(CreateTutorialInput input) {
Tutorial tutorial = new Tutorial(input.getTitle(), input.getDescription(), input.getAuthorId());
tutorialService.save(tutorial);
return tutorial;
}
实现 GraphQL 字段解析器TutorialResolver
对于 Tutorial 中的复杂类型 author,我们需要字段解析器去解析它的值,TutorialResolver 实现了 GraphQLResolver 接口并实现 getAuthor() 方法
resolver/TutorialResolver.java
@MutationDataFetcher(type = "Mutation", field = MutationUploadProjectDataFetcher.UPLOAD_PROJECT_FIELD)
public class MutationUploadProjectDataFetcher implements IDataFetcherWithFieldCoordinates<IPayload> {
dataFetcher-类似请求具体执行
@QueryDataFetcher(type = "Query", field = "getUserInfos")
// Query 也可以是修改操作: Mutation
public class ModersDataFetcher implements IDataFetcherWithFieldCoordinates<List<Moders>> {
service 调用dao 查询数据库返回list
@Override
public List<Moders> getUserInfos(String projectId)
配合graphqls 文件定义的 类和 Query 增删改操作
4. url对外提供url
推荐阅读
java面试大全-找工作必备-一文完成复习找工作
Java 最常见的 200+ 面试题:面试必备
leetcode刷题必备-面试必备-GitHub 上 Star 最多的算法项目
一口气说出 9种 分布式ID生成方式,面试官有点懵了
java书单 juejin.cn/post/699248…
Redis系列-我用1W字总结了所有的点,确定不了解一下吗?
Python面试题大全 - 50道经典面试题
python常用库-python常用包大全
Arthas - Java 线上问题定位处理的终极利器
graphql入门必知必会-看完不用看其他了
maven命令分析+区别介绍-maven包冲突解决大全