graphql入门必知必会-看完不用看其他了

98 阅读3分钟

graphql优缺点

在正式使用之前您需要了解

juejin.cn/post/725028…

graphQL java实现资料

www.jianshu.com/p/4ede220b7… s10 juejin.cn/post/684490… 三分钟介绍GraphQL

juejin.cn/post/706669…

juejin.cn/spost/72499…

官网资料: 官网查看 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面试大全-找工作必备-一文完成复习找工作

juejin.cn/post/699477…

Java 最常见的 200+ 面试题:面试必备

juejin.cn/post/684490…

leetcode刷题必备-面试必备-GitHub 上 Star 最多的算法项目

juejin.cn/post/707498…

一口气说出 9种 分布式ID生成方式,面试官有点懵了

juejin.cn/post/684490…

java书单 juejin.cn/post/699248…

Redis系列-我用1W字总结了所有的点,确定不了解一下吗?

juejin.cn/post/699108…

Python面试题大全 - 50道经典面试题

juejin.cn/spost/72581…

python常用库-python常用包大全

juejin.cn/post/723262…

Arthas - Java 线上问题定位处理的终极利器

juejin.cn/post/699501…

graphql入门必知必会-看完不用看其他了

juejin.cn/post/725028…

maven命令分析+区别介绍-maven包冲突解决大全

juejin.cn/post/725289…

大厂面试真经