复杂的API与简单的API端点

时间:2017-10-09 15:40:16

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

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

考虑以下模型:

  1. 面板:是信息中心内的容器元素。它定义仪表板内的尺寸/位置。它还使用content_type和content_id(多态关联)定义其内容。
  2. Chart / SingleValue / Section :这些都是可以用作面板内容的模型。
  3. 我现在想做的是让用户创建一个"图表面板"一步到位。

    如果现在好一点,我一直想知道:

    1. 拥有所有基本的CRUD API端点,并在前端100%管理面板+图表创建。这将意味着前端更复杂,但API端点更少。
    2. 在Rails端有一个额外的API端点来创建面板+图表/面板+ single_value / panel +部分(原子操作)。这意味着前端的复杂性要低得多,但API端点会更多。
    3. 理想的方法是什么?

2 个答案:

答案 0 :(得分:1)

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

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

我的建议是Panel应该是一个集中的组件(解析维度和位置),而每个children都应该根据content.type呈现它们。您将能够使用单个端点并仍然保留RESTFul标准。

答案 1 :(得分:0)

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