Fel*_*ger 3 graphql apollo-server
这是在 ApolloServer 中弃用字段的模式:
type Car {
id: ID!
make: String
model: String
description: String @deprecated(reason: "Field is deprecated!")
}
Run Code Online (Sandbox Code Playgroud)
但是,如何弃用整个类型 - 例如Car
上面的类型?
类型不能被弃用。仅字段和枚举值可以被弃用。@deprecated
这在指令的定义中显示:
directive @deprecated(
reason: String = "No longer supported"
) on FIELD_DEFINITION | ENUM_VALUE
Run Code Online (Sandbox Code Playgroud)
并在这里解释(强调我的):
为了支持向后兼容性的管理,GraphQL字段和枚举值可以指示它们是否已弃用 (
isDeprecated: Boolean
) 以及弃用原因的描述 (deprecationReason: String
)。
弃用旨在指示客户端停止请求已弃用的元素。由于客户端不请求特定类型,仅请求特定字段,因此弃用类型实际上没有意义。