api - 如何在登台服务器上保持 GraphQL API 和前端同步?
问题描述
我们在一个 GIT 存储库中有一个带有 GraphQL API 的 Rails 应用程序,在另一个存储库中有 React 前端应用程序。后端和前端都有 CI,并且是分开部署的。但是后端和前端仍然处于繁重的开发中,而且我们的登台服务器通常无法工作,因为部署不同步并且我们不测试整个应用程序 - 我们测试 API 并且我们在没有 API 的情况下测试前端。
仅在同步时部署前端和后端的最佳方法是什么,我的意思是当新版本不会破坏功能时?我考虑了第三个存储库,其中包含后端和前端作为 GIT 模块、验收测试和同时部署双方。但也许有更简单的解决方案?也许一些版本控制?
解决方案
您当然可以使用 GraphQL 进行版本控制,但理想情况下,对架构的任何更改都不应该是破坏性的。这只需要后端开发人员的纪律,尽管也有工具(像这样)来帮助检测重大更改。一些一般准则:
- 使用指令弃用字段
@deprecated
而不是删除它们。已弃用的字段可以传达给客户团队,并在一些商定的时间后退役。 - 避免重命名类型。尝试使用更具体的命名来避免将来必须重命名事物(即,如果您可以预见将来会有不同类型的消息,则使用
emailMessage
而不是使用)。message
- 使用有效负载类型进行突变。
User
例如,如果你改变 a ,而不是仅仅返回User
,返回一个有一个user
字段的有效载荷类型。如果在路上,您意识到突变还应该返回其他信息,您可以轻松地将字段添加到有效负载类型,而无需创建重大更改。