无需修改解析器或定义,合并三个调用不同服务的GraphQL查询
嘿,这事儿其实超简单,完全不用动后端的解析器或者类型定义,咱们只需要调整查询语句就能搞定!
你现在的三个查询可以直接合并成一个GraphQL请求——因为GraphQL的根查询类型允许你在同一个查询里同时请求多个字段,每个字段会由对应的独立解析器处理,而且这些异步请求(比如你的axios调用服务)会被并行执行,最后自动合并成一个结果返回给你。
直接用这个合并后的查询就行:
query CombinedProfileQuery { individualQ { name } addressQ { address } contactQ { phone } }
如果你觉得返回的字段名(individualQ、addressQ)不够直观,还可以给它们起别名,让返回结构更清晰,同样不需要改后端任何代码:
query CombinedProfileQuery { individual: individualQ { name } address: addressQ { address } contact: contactQ { phone } }
这样返回的结果会更规整:
{ "data": { "individual": { "name": "xxx" }, "address": { "address": "xxx" }, "contact": { "phone": "xxx" } } }
原理也很直白:你的每个字段都有自己独立的解析器,GraphQL会自动触发这些解析器并行调用对应的服务,最后把所有结果打包成一个响应返回,完全不需要修改类型定义或者解析器的逻辑。
内容的提问来源于stack exchange,提问作者Mohamed Taboubi
相关产品推荐
相关产品推荐

