GraphQL版本控制,不可为空为可空

时间:2017-08-02 14:32:38

标签: graphql

一开始我们有架构

type User {
  id: ID!
  name: String!
  birthday: String!
}

经过一段时间后,我们决定生日对新用户不是强制性的,因此架构应更改为

type User {
  id: ID!
  name: String!
  birthday: String
}

这是一个重大改变。

如何在GraphQL中对此案例进行版本控制?

1 个答案:

答案 0 :(得分:0)

正如these official best practices versioning 部分中所述,尽管这样做没有任何技术问题,也不建议在GraphQL中进行传统的API版本控制。我认为我们正在破坏我们的模型,因为它会在业务API中引入技术领域...这绝对不是理想的选择。

为帮助管理API的发展,他们引入了this link中所述的字段弃用概念。

总而言之,我想说您基本上有两种解决方案:

  1. 仍要进行版本控制;
  2. 将字段“ 生日”设置为已弃用,并添加一个具有相同名称的新字段(也许是“ birthday_date ”?)。显然,不要忘记告诉您的api客户端使用此新字段。从长远来看,请删除不推荐使用的字段。