You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GraphQL中能否在Input/Type类型中封装对象?

GraphQL Input类型中能否内联封装对象?

不行,你提供的第二种写法不符合GraphQL的语法规范,无法被解析器识别。

原因说明

GraphQL的输入类型(Input Type)定义规则明确:字段的类型必须是已命名的标量类型、枚举类型、输入类型,或是这些类型结合[](列表)、!(非空)修饰后的形式。你不能直接在字段里内联定义匿名的输入对象结构,必须先通过input关键字定义一个命名的输入类型,再在其他输入类型中引用它。

正确写法(你提供的第一种)

input MyChildInput {
  territoryId: String!
  mapsTo: [String!]!
}

input MyInput {
  uuid: ID!
  childInput: [MyChildInput!]!
}

为什么不支持内联?

这种设计是为了保证Schema的可维护性和复用性:

  • 命名的输入类型可以在多个地方重复引用,避免重复代码
  • 让Schema结构更清晰,便于团队协作理解
  • 方便客户端工具(比如代码生成器)基于Schema生成对应的类型定义(如TypeScript接口)

内容的提问来源于stack exchange,提问作者Gerrol

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 18:15:47