如何基于指定GraphQL Schema发起对象列表请求?
先理清楚你的Schema核心结构
首先,咱们先拆解下你提供的Schema里和列表相关的关键部分:
- 根查询
Query提供了两个单对象入口:money(id: Long!)(根据ID拉取单个Money)和coin(id: Long!)(根据ID拉取单个Coin) Money类型里的coins字段是**[Coin!]!类型**——也就是必填的非空Coin对象列表,这是你获取Coin列表的核心入口Coin类型里的history是**[DateVal!]类型**——也就是可选的非空DateVal对象列表,用来获取单枚Coin的历史数据
编写获取对象列表的GraphQL查询
根据你的需求,这里提供两种最常用的列表查询场景:
1. 查询指定Money下的所有Coin列表
如果你想通过某个Money的ID,获取它关联的全部Coin对象(还可以同时拉取每个Coin的详情甚至历史数据),可以用这个查询:
query FetchMoneyAndItsCoins { money(id: 5) { # 替换成你实际要查询的Money ID id coins { # 这里就是请求Money对象下的Coin列表 id name # 可选:如果需要每个Coin的历史数据,就加上这个字段 history { date val } } } }
执行这个查询后,你会得到ID为5的Money对象,以及它包含的所有Coin组成的列表,每个Coin的字段都会按照你指定的返回。
2. 查询指定Coin的历史数据列表
如果只需要单个Coin的历史数据列表,可以直接查询coin字段:
query FetchCoinHistory { coin(id: 1) { # 替换成目标Coin的ID id name history { # 请求该Coin的历史数据列表 date val } } }
关于REST端点的小补充
你提到的/money和/coin这两个REST端点,应该是你的GraphQL服务的数据源。当你执行上面的GraphQL查询时,服务端会自动帮你调用对应的REST接口:比如执行第一个查询时,先调用/money?id=5拿到Money数据,再根据返回的coins里的每个ID调用/coin?id=xxx来获取完整的Coin信息(如果你的查询里包含了Coin的额外字段的话),最后把这些数据组装成符合GraphQL查询结构的响应返回给你。
内容的提问来源于stack exchange,提问作者ruthless
相关产品推荐
相关产品推荐

