cla*_*ron 7 migration deprecated graphql
我要弃用一个变体:
updateObject(
id: String!
object: ObjectInput!
): Object!
Run Code Online (Sandbox Code Playgroud)
我们想将其更改为:
updateObject(
object: UpdateObjectInput!
): Object!
Run Code Online (Sandbox Code Playgroud)
其中,ObjectInput和UpdateObjectInput是:
input ObjectInput {
product: String!
isPercentage: Boolean
amount: Float!
visibility: ObjectVisibility
isDiscontinued: Boolean
expiresAt: String
}
Run Code Online (Sandbox Code Playgroud)
和
input UpdateObjectInput {
id: String!
visibility: ObjectVisibility
isDiscontinued: Boolean
expiresAt: String
}
Run Code Online (Sandbox Code Playgroud)
基本上,ObjectInput非常适合创建Object,但不适用于更新它。
我们尝试使突变超载或将突变标记为已弃用,但均无效。
我们提出的唯一其他解决方案是将新的updateObject突变重命名为其他名称,例如“ newUpdateObject”,或者使id和object字段弃用且为可选,然后添加字段“ updateObject”或在新的UpdateObjectInput中。但是,这些都不是最优的。
还有另一种方法可以完成迁移吗?
弃用一个字段是装饰性的——它只是引入了可由客户端工具使用的元数据,并且可以在不更改字段描述的情况下提供有关该字段的附加信息。当对架构的更改否则将成为破坏性更改时,避免给客户带来问题的唯一方法是引入新的字段和/或参数。您已经提供了一些选项:
updateObject(
id: String!
object: ObjectInput!
): Object! @deprecated("Use updateObject2 instead")
updateObject2(
object: UpdateObjectInput!
): Object!
Run Code Online (Sandbox Code Playgroud)
@deprecated参数。updateObject(
"""Don't use. Use object2 instead"""
id: String!
"""Don't use. Use object2 instead"""
object: ObjectInput!
object2: UpdateObjectInput!
): Object!
Run Code Online (Sandbox Code Playgroud)
版本 API。在其当前端点维护现有架构,但在不同端点引入更新的架构。指导您的客户团队切换到新端点。
只介绍突破性的变化。可以与客户端团队协调,在某个可接受的维护窗口内将更改部署到服务器和客户端。
| 归档时间: |
|
| 查看次数: |
505 次 |
| 最近记录: |