模式命名惯例
在您的 GraphQL 模式中对类型、字段和参数进行命名规范和考量的说明
强制执行约定
使用 GraphOS 模式校验 来捕捉命名违规。 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_ONEVALUE_TWO}
字段名称
避免在 get
或 list
等查询 字段 上使用动词前缀:
type Query {# ❌ incorrectgetProducts: [Product]# ✅ correctproducts: [Product]}
这会在根 字段 和嵌套字段之间创建一致性:
# ❌ incorrectquery Products {getProducts {idgetReviews {content}}}# ✅ correctquery Products {products {idreviews {content}}}
将 mutation 字段以动词开头:
type Mutation {# ❌ incorrectcustomerAdd(input: AddCustomerInput): AddCustomerPayload!# ✅ correctaddCustomer(input: AddCustomerInput): AddCustomerPayload!}
类型名称
命名输入类型时,使用后缀 Input
:
input AddCustomerInput {name: String!}
命名从 mutations 返回的输出类型时,使用一致的后缀如 Response
或 Payload
:
type Mutation {addCustomer(input: AddCustomerInput!): AddCustomerResponse!}type AddCustomerResponse {success: Boolean!}
其他考虑因素
命名空间
在解决不同领域之间的命名冲突时,我们建议使用以下方法之一:
PascalCase
前缀
type StoreCustomer { ... }type SiteCustomer { ... }
Single_Underscore
前缀
type Store_Customer { ... }type Site_Customer { ... }