能否对GraphQL嵌套查询语句进行简写缩短?
关于GraphQL查询语句缩短的解答
标准 GraphQL 语法不支持你举例的点号链式简写写法,这种写法不符合 GraphQL 官方的语法规范,原生 GraphQL 服务端均无法正常解析该类语句。
如果你确实需要缩短查询语句,可使用两种符合规范的方案实现:
- 方案一:使用 GraphQL 片段(Fragment)复用嵌套字段。如果多个查询都需要拉取该路径下的字段,可将嵌套部分封装为公共片段,示例代码如下:
# 先定义片段,注意片段的类型要和父字段的返回类型对应 fragment ABDFields on AReturnType { b(f: $f) { c { d { e } } } } # 查询时直接引用片段即可 query a($f: Int) { a { ...ABDFields } }
- 方案二:协调后端调整 GraphQL Schema,新增扁平化的快捷查询字段。如果该嵌套路径是业务高频查询场景,可以让后端在 Schema 中新增直接返回对应层级数据的字段,后续查询即可直接调用该字段:
# 后端新增了a_b_c_d快捷字段后,查询可以大幅缩短 query a($f: Int) { a_b_c_d(f: $f) { e } }
内容的提问来源于stack exchange,提问作者beardeadclown
相关产品推荐
相关产品推荐

