简介
GraphQL是一种用于API或数据的查询语言。
优势
- 发出一个GraphQL请求就能准确获得想要的数据,不多不少。 - GraphQL查询总是返回可预测的结果。
- REST API请求多个资源时,GraphQL可以通过一次请求就获取所需的所有数据。
- GraphQL基于类型和字段的方式进行查询语言定义。
Maven引入
1
2
3
4
5<dependency>
<groupId>com.graphql-java</groupId>
<artifactId>graphql-java</artifactId>
<version>15.0</version>
</dependency>
Schema定义
1 | schema { |
GraphQL实例化
1 |
|
扩展类型
1 |
|
支持Map1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34public static final GraphQLScalarType GraphQLMap = new GraphQLScalarType("Map", "A custom map scalar type", new Coercing() {
public Map serialize(Object dataFetcherResult) throws CoercingSerializeException {
Map map;
try {
map = (Map) dataFetcherResult;
} catch (ClassCastException exception) {
throw new CoercingSerializeException("Could not convert " + dataFetcherResult + " into a Map", exception);
}
return map;
}
public Map parseValue(Object input) throws CoercingParseValueException {
Map map;
try {
map = (Map) input;
} catch (ClassCastException exception) {
throw new CoercingParseLiteralException("parseValue called");
}
return map;
}
public Map parseLiteral(Object input) throws CoercingParseLiteralException {
Map map;
try {
map = (Map) input;
} catch (ClassCastException exception) {
throw new CoercingParseLiteralException("parseLiteral called");
}
return map;
}
});
扩展类型定义
1 | scalar Short |
GraphQL调用
1 |
|
DataFetcher定义
1 | public DataFetcher find(ILoader loader, String idName){ |