【问题标题】:How to keep GraphQL API and frontend synchronized on a staging server?如何在登台服务器上保持 GraphQL API 和前端同步?
【发布时间】:2019-08-07 11:53:22
【问题描述】:

我们在一个 GIT 存储库中有一个带有 GraphQL API 的 Rails 应用程序,在另一个存储库中有 React 前端应用程序。后端和前端都有 CI,并且是分开部署的。但是后端和前端仍然处于繁重的开发中,而且我们的暂存服务器经常无法工作,因为部署不同步,我们没有测试整个应用程序 - 我们测试 API,我们测试没有 API 的前端。

只有在同步时部署前端和后端的最佳方式是什么,我的意思是当新版本不会破坏功能时?我考虑了第三个存储库,其中包含后端和前端作为 GIT 模块、验收测试和同时部署双方。但也许有更简单的解决方案?也许一些版本控制?

【问题讨论】:

    标签: api deployment graphql versioning api-design


    【解决方案1】:

    您当然可以使用 GraphQL 进行版本控制,但理想情况下,对架构的任何更改都不应该破坏。这只需要后端开发人员的纪律,尽管也有工具(如this)来帮助检测重大更改。一些一般准则:

    • 使用@deprecated 指令弃用字段,而不是删除它们。已弃用的字段可以传达给客户团队,并在商定的一段时间后停用。
    • 避免重命名类型。尝试使用更具体的命名以避免将来必须重命名(即,如果您可以预见将来会收到不同类型的消息,请使用 emailMessage 而不是仅使用 message)。
    • 使用有效负载类型进行突变。例如,如果您对User 进行变异,而不是仅返回User,而是返回具有user 字段的有效负载类型。如果在路上,您意识到突变还应该返回其他信息,您可以轻松地将字段添加到有效负载类型,而不会造成重大更改。

    【讨论】:

    • 如果后端有人在模型中添加了必填字段,但前端的表单中仍然没有实现呢?在这种情况下,我们无法编辑模型。我想避免这种情况。
    • 是的,添加非空 input 字段或非空参数也将是一项重大更改。一种解决方案是弃用整个受影响的字段并在不同名称的字段下实施更改。
    猜你喜欢
    • 2015-03-31
    • 1970-01-01
    • 2014-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-24
    • 2021-10-25
    • 2019-07-10
    相关资源
    最近更新 更多