首先定义一个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的方法里,根据请求的字段拼接最后的响应结构: