Rails 5 API 和管理 UI 的常规架构是什么?

What is the conventional architecture for a Rails 5 API with an Administrative UI as well?

我打算开始一个新的 Rails 5 API,并意识到我还需要某种内容管理 "site"。管理工具非常简单,只是一个 UI 用于非常基本的 CRUD 操作。

我本能地创建了两个单独的 Rails 应用程序 - 一个用于内容管理工具的 Web 应用程序,另一个用于 API。

这带来了共享数据模型的问题,可以通过使用 rails 引擎或将模型作为 gem.

来解决。

在研究解决方案时,我似乎观察到一种模式,即在 API 应用程序本身中包含内容管理部分。这涉及一些中间件包含和控制器继承,但是在与 API 相同的应用程序中获取内容管理 UI 到 运行 非常简单。它的工作要少得多,而且我认为规模没有太大问题,因为内容管理 UI 很少使用,而 API 是业务的核心。

这是公认的惯例吗?由于网络搜索结果,我可能会产生偏见,但这似乎是最简单和最常见的方法。我计划有一个单独的服务器来访问内容管理与访问 API,这导致我最初将其计划为两个单独的应用程序。现在我在想我只是被 "microservices" 炒作所吸引,而且将内容管理 UI 包含在我的 API 应用程序中似乎更传统。

另一方面,我读到的关于 Rails 引擎的所有内容都已经过时 3-4 年了。在过去一年左右的时间里(我偶然发现的)信息很少,更具体地说,关于 Rails 5 的信息几乎没有。我想知道这种架构是否已经半途而废。

对于 Rails 5 API 还需要内容管理员 UI 的应用程序是否有典型的约定?

我之前使用的方法是从 /app/controllers/api 中获取 api 运行,然后安装 ActiveAdmin gem,使用/app/admin 中的管理界面文件。您可以设置路由以在 https://api.yourapp.com/admin 处为管理界面提供服务,在 https://api.yourapp.com/api/v1/ 或类似处设置 API 处的管理界面。

我不知道这是多少公认的约定,但它工作正常。