能否根据query参数动态确定GraphQL返回的数据类型?
GraphQL根据传入query参数动态判定返回数据类型的实现说明
首先给出明确结论:可以实现,该能力依托于GraphQL原生的强类型系统和内省特性,分两种角色给出落地方案:
- 如果你是服务端开发,可直接基于现有GraphQL工具链实现判定逻辑
GraphQL服务端本身维护了完整的Schema类型定义,任意合法query传入后,会先经过「解析-验证」两个前置步骤,该阶段就能获取到当前请求对应返回值的完整类型结构。你可以选择在返回响应前将判定好的类型信息随业务数据一并返回给前端,也可以在网关层提前完成类型校验、转换后再下发响应。
举个实践示例:如果使用JS生态的graphql标准库,可以直接调用validate()、getOperationType()等内置API,无需自行解析query字符串就能直接拿到对应操作的返回类型定义。 - 如果你是不了解GraphQL的前端开发,无需学习底层语法就能拿到确定的返回类型
你可以直接要求服务端侧做两个适配:一是请求时默认带回GraphQL内置元字段__typename,该字段会自动返回当前返回对象的类型名,无需额外定义;二是服务端提前将不同业务场景query对应的返回字段结构同步给你,你按约定读取字段即可,不需要自己处理query的解析和类型判定逻辑。
注意:不要尝试手动解析query字符串来判定返回类型,GraphQL支持别名、片段、变量等多种语法变体,手动解析很容易出现判定误差,直接用官方工具链的能力即可覆盖所有合法场景。
内容的提问来源于stack exchange,提问作者DeveloperByTheGraceOf JESUS
相关产品推荐
相关产品推荐

