graphql - 添加 Enum 值对 GraphQL 来说是一个重大变化吗?

标签 graphql

根据GraphQL Best Practices ,GraphQL 服务应遵循“始终避免破坏性更改并提供无版本 API 的常见做法”。

如果遵循最佳实践,向枚举添加值是否被视为应该避免的重大更改?

为了说明这一点,假设模式具有以下枚举:

enum Episode {
  NEWHOPE
  EMPIRE
  JEDI
}

在将来的某个时候将枚举演变为这样的做法是否不好:
enum Episode {
  NEWHOPE
  EMPIRE
  JEDI
  FORCEAWAKENS
  ROGUEONE
}

最佳答案

具体来说,破坏性更改是对架构结构的更改,这将导致已编写的查询失败。我在网上找不到详尽的列表,但这里有一些重大更改示例:

  • 从对象类型中删除字段(使用该字段的查询将无效)
  • 向字段添加必需参数(使用没有该参数的字段的查询将无效)
  • 当新类型不是旧类型的父类(super class)型时更改字段的返回类型(例如,从 Int 更改为 String ,使用该字段的客户端可能会在新响应中出现类型错误)。

  • 新的枚举值可能会破坏客户端(如果它没有处理新情况的代码,则可能存在运行时错误),但我认为这是客户端设计问题,而不是对架构的重大更改!

    关于graphql - 添加 Enum 值对 GraphQL 来说是一个重大变化吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43106173/

    相关文章:

    java - 将多个 graphQL 模式文件映射到单独的解析器 - Spring Boot

    javascript - 如何在 gatsby 的 graphql 查询中使用正则表达式

    graphql - 不能为不可为空的字段返回空值,调试器不显示空值

    mysql - 使用 Sequelize 从 MySQL 获取数据到 GraphQL 失败

    javascript - 在 React Native 中使用 React-navigation 时,无法获取 Relay 中的数据

    django - 如何使用curl登录Graphene Django应用程序?

    mysql - Apollo 服务器订阅不起作用

    python - Graphite 烯 Python 列表为所有字段解析 null

    graphql - 我可以扩展 graphql 片段吗?

    javascript - 如何在nodeJs + sequelize+graphql中的s3存储桶上上传之前获取文件大小?