10月8日至10日,与新 York City 一起参加活动,学习 GraphQL 联盟和 API 平台工程的最新技巧、趋势和新闻。参加 2024 年 NYC 的 GraphQL 大会
文档
免费开始

模式命名惯例

在您的 GraphQL 模式中对类型、字段和参数进行命名规范和考量的说明

schema-design

💡 小贴士

如果您是寻求更多此主题资料的商用客户,请尝试 Odyssey 上的课程企业最佳实践:模式设计 课程。

尚未成为企业客户? 了解 GraphOS for Enterprise。

强制执行约定

使用 模式校验 来捕捉命名违规。 GraphOS 模式校验可以在 模式检查 中执行,这允许您在 CI/CD 管道中强制执行此规范,或者可以使用 Rover 进行本地的一次性请求。

高层次指导

  • 无论您的选择何种规范,都要在整个模式中保持一致。
  • 使用具体的名称—不要“抢占”适用范围广的名称。
  • 避免使用缩写词、首字母缩略词和缩写。

大小写

使用camelCase 用于 名称、 名称和 名称:

type Query {
myCamelCaseFieldNames(myArgumentName: String): String
}
directive @myDirective on FIELD

使用 PascalCase 为类型名称:

type MyType { ... }
enum MyEnum { ... }
interface MyInterface { ... }
union MyUnion = ...
scalar MyScalar

使用 SCREAMING_SNAKE_CASE 为枚举值:

enum MyEnum {
VALUE_ONE
VALUE_TWO
}

字段名称

避免在 getlist 等查询 上使用动词前缀:

type Query {
# ❌ incorrect
getProducts: [Product]
# ✅ correct
products: [Product]
}

这会在根 和嵌套字段之间创建一致性:

# ❌ incorrect
query Products {
getProducts {
id
getReviews {
content
}
}
}
# ✅ correct
query Products {
products {
id
reviews {
content
}
}
}

字段以动词开头:

type Mutation {
# ❌ incorrect
customerAdd(input: AddCustomerInput): AddCustomerPayload!
# ✅ correct
addCustomer(input: AddCustomerInput): AddCustomerPayload!
}

类型名称

命名输入类型时,使用后缀 Input

input AddCustomerInput {
name: String!
}

命名从 返回的输出类型时,使用一致的后缀如 ResponsePayload

type Mutation {
addCustomer(input: AddCustomerInput!): AddCustomerResponse!
}
type AddCustomerResponse {
success: Boolean!
}

其他考虑因素

命名空间

在解决不同领域之间的命名冲突时,我们建议使用以下方法之一:

PascalCase 前缀

type StoreCustomer { ... }
type SiteCustomer { ... }

Single_Underscore 前缀

type Store_Customer { ... }
type Site_Customer { ... }
下一页
首页
评估文章评价在GitHub上编辑编辑论坛Discord

©2024Apollo Graph Inc.,亦称Apollo GraphQL。

隐私政策

公司