GraphQL的query只返回所请求的字段的实现原理
原理 实现 请求 返回 Query GraphQL
2023-09-14 09:03:58 时间
首先定义一个Product类型的对象,拥有id,name,price等基本字段:
然后定义一个query,输入参数为id,返回的类型正是Product:
这个query的实现,我简单的给product的price字段生成一些随机数:
做个测试:
输入查询结构,我只请求了id和name字段:
query {
product(id:"5") {
id
name
}
}
而GraphQL也确实按照了我的期望,只返回id和name的值。GraphQL背后是如何实现这个逻辑的?
注意这个名为completeObjectValue的调用栈里的collectandExecuteSubfields方法:
解析出来,当前请求的字段为id和name:
在这个executeFields的方法里,根据请求的字段拼接最后的响应结构:
要获取更多Jerry的原创文章,请关注公众号"汪子熙":
相关文章
- java实现断点续传的原理
- 大叔经验分享(15)spark sql limit实现原理
- Bloom Filter概念和原理
- 闹钟的设计原理与实现
- MySQL事务隔离级别和实现原理
- Oracle log file sync原理详解
- MongoDB writeConcern原理解析
- 四叉树空间索引原理及其实现
- SAP CRM Fiori 标准应用 My Account - search by ID 根据 ID 进行搜索的标准功能实现原理
- SAP Cloud for Customer里的服务请求(Service Request)路由(Route)实现原理
- SAP Hybris里搜索显示结果的实现原理
- Cordova内部http请求的proxy实现原理
- Atitit.java线程池使用总结attilax 1.1. 动态更改线程数量1 1.2. code1 三、线程池的原理 其实线程池的原理很简单,类似于操作系统中的缓冲区的概念,它的流程如下
- Atitit.数据索引 的种类以及原理实现机制 索引常用的存储结构
- Atitit 面向对象 封装的实现原理
- Atitit 网络爬虫与数据采集器的原理与实践attilax著 v2
- Atitit 自然语言处理原理与实现 attilax总结
- Atitit.md5 实现原理
- Atitit.木马病毒的免杀原理---sikuli 的使用
- Atitit.ioc 动态配置文件guice 设计原理
- Angular @Injectable 注解的工作原理浅析
- Angular jasmine单元测试框架里describe的实现原理
- google PLDA + 实现原理及源代码分析
- 【Android 热修复】热修复原理 ( Dex 文件拷贝后续操作 | 外部存储空间权限申请 | 执行效果验证 | 源码资源 )
- ArangoDB介绍——未知架构和底层原理
- 05| RWMutex:读写锁的实现原理及避坑指南
- 【java】Spring Boot -- Spring AOP原理及简单实现
- 互联网的运行原理