CreateArtTechnology
/ Blog
Login
最新文章
Java
语言相关
库相关
虚拟机相关
CreateArtTechnology
项目搭建
使用的工具
自研的工具
开源工具
ELK
ElasticSearch
Jenkins
Markdown
GraphQL
Arthas
生产工具
Linux
Nginx
VersionControl
Subversion
Git
Redis
Archiva
Maven
Zookeeper
Spring
SpringBoot
MySql
HBase
Cassandra
容器化
Docker
Kubernetes
服务容器化从零开始
未分类笔记
算法相关
概念相关
豆知识
机器学习
机器学习从零开始
graphql-java关键组成部分DataFetcher、TypeResolver、RuntimWiring的使用
21
2018-09-25 14:21:12
开源工具
GraphQL
##DataFetcher 用于获取数据 动态获取可使用匿名实现DataFetcher ``` environment -> rockmanService.getHerosFromSeries(environment.getArgument("series")) ``` 静态内容可使用静态实现类StaticDataFetcher ##TypeResolver 为SDL的Interface或Union设置TypeResolver,用于泛型的向下转型 ```java new TypeResolver() { @Override public GraphQLObjectType getType(TypeResolutionEnvironment env) { Object obj = env.getObject(); if (obj instanceof Doctor) { return env.getSchema().getObjectType("Doctor"); } else if (obj instanceof Hunter) { return env.getSchema().getObjectType("Hunter"); } else if (obj instanceof Enemy) { return env.getSchema().getObjectType("Enemy"); } return null; } }; ``` ##RuntimeWiring 最重要最关键的数据绑定部分 ``` RuntimeWiring.newRuntimeWiring() .type("QueryType", builder -> builder .dataFetcher("hero", environment -> rockmanService.getHerosFromSeries(environment.getArgument("series"))) .dataFetcher("hunter", environment -> rockmanService.getHunterFromName(environment.getArgument("name"))) .dataFetcher("enemy", environment -> rockmanService.getEnemyFromName(environment.getArgument("name"))) ) .type("Hunter", builder -> builder .dataFetcher("enemies", environment -> rockmanService.getEnemies()) ) .type( newTypeWiring("Character") .typeResolver(typeResolver) .build() ) .build(); // 第一个type绑定对应查询入口,即SDL中的 type QueryType { hero(series: Series): Character hunter(name: String): Hunter enemy(name: String): Enemy } // 第二个type绑定对应查询结果中非基本类型的子查询,即SDL定义的enemies,结果是Character,需要二次查询 type Hunter implements Character { id: ID! name: String! enemies: [Character] appearsIn: [Series]! } // 第三个type绑定是为了给interface Character绑定一个TypeResolver,基本是instanceof ```
发布文章 101
文章被阅读 1817
最近修改
什么是“丝滑”的曲线
2021-12-08 15:19:20
高效空间数据索引R树及其批量加载方法STR简介
2021-09-29 20:33:37
关于分库分表的一些事儿
2021-06-25 11:51:25
获得诺奖的稳定匹配理论之TTC算法与GS算法
2021-03-14 23:04:48
算法小白的机器学习入门实践,从零到上线
2021-01-13 14:28:27
分站宗旨
一站式资料平台,减少重复检索,减少重复采坑。