【问题标题】:complex API vs simple API endpoint [closed]复杂 API 与简单 API 端点 [关闭]
【发布时间】:2017-10-09 15:40:15
【问题描述】:

我有一个主要是 API 端点的后端 Rails 应用程序和一个主要在 React 中构建的前端应用程序。

考虑以下模型:

  1. 面板:是仪表板内的容器元素。它定义仪表板内的尺寸/位置。它还使用 content_type 和 content_id(多态关联)定义其内容。
  2. Chart / SingleValue / Section:这些都是可以用作面板内容的模型。

我现在想做的是让用户一步创建“图表面板”。

我一直想知道是否更好:

  1. 拥有所有基本的 CRUD API 端点并在前端 100% 管理面板+图表创建。这意味着前端的复杂性更高,但 API 端点更少。
  2. 在 Rails 端有一个额外的 API 端点来创建 panel+chart/panel+single_value/panel+section(原子操作)。这意味着前端的复杂性要低得多,但 API 端点要多。

理想的方法是什么?

【问题讨论】:

    标签: ruby-on-rails reactjs api axios grape-api


    【解决方案1】:

    可能对使用以下请求正文创建的每个面板执行单个POST 请求到/panels/(假设每个面板都需要一个内容):

    {
      dimensions: '',
      positions: '',
      content: {
        type: 'chart', // singleValue, section
        // content attributes
      }
    }
    

    我的建议是Panel 应该是一个集中式组件(它解析尺寸和位置),并且对于每个children,您根据content.type 渲染它们。您将能够使用单个端点并且仍然保持 RESTFul 标准。

    【讨论】:

      【解决方案2】:

      在我看来,如果可以简化 UI 的复杂性,您可以聚合细粒度端点并创建更多端点。这基本上是一个外观模式(https://en.wikipedia.org/wiki/Facade_pattern),您可以将细粒度的端点聚合成特定的高阶端点,这将有助于 UI 创建更复杂的结构,而无需进入所述结构的实现细节。

      【讨论】:

        猜你喜欢
        • 2020-03-26
        • 1970-01-01
        • 1970-01-01
        • 2020-09-18
        • 2014-01-10
        • 2020-06-16
        • 2011-10-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多