提供API灵活定制查询
Rest基于文档思路,考虑到多端兼容
- 返回资源全部字段,无法定制返回范围
- 关联关系需要客户端发起多次请求自行关联
GraphQL
GraphQL使API具有动态性,查询时携带查询模板,精准定位所需对象和字段
示例展示三个功能:定位一本书,返回部分属性,进行作者关联
1 | { |
GraphQL Schema,通过SDL(Schema Definition Language)定义资源,表示资源有哪些字段,都是什么类型
1 | type Query { |
Graphql-Java
不包含通信逻辑,只关注如何解析查询和获取结果
两大组件:类型定义元数据和数据获取器,大体流程是
1 | Schema file ---parse----> TypeDefinitionRegistry \ |
每个字段都应该指定DataFetcher,默认PropertyDataFetcher
1 | public interface DataFetcher<T> { |
解析流程是自顶向下,每个被查询的字段调用DataFetcher获取结果,当前字段可以访问环境得到进一步查询所需信息,逐级解析
1 | public interface DataFetchingEnvironment { |
Graphql-Playground
https://github.com/prisma-labs/graphql-playground
测试工具
一分也是爱~
版权声明
This site by Linest is licensed under a Creative Commons BY-NC-ND 4.0 International License.
由Linest创作并维护的博客采用创作共用保留署名-非商业-禁止演绎4.0国际许可证。