如何使用嵌入资源进行干燥

时间:2016-11-28 14:16:38

标签: rest reactjs dry

我目前正在设计一个将由ReactJS应用程序使用的REST API。两个实际端点如下:

/species
    id
    types
        [name, name] // each specy has 2 types, contained in an array

/types
    name

我们可以看到,我们的端点提供了所有type资源的列表,species端点提供了特定规格的type

在我的ReactJS应用程序中,我将有一个Select字段,其中包含types列表(通过/types端点获取),以及所有species获取的列表来自/species。然后,用户可以通过在“选择”字段中选择类型来过滤物种。

在Select组件中维护types列表是否仍然干,并且在species组件的数组中包含Specy列表?或者我应该找到一种方法从types中注入从他们自己的端点获取的specy

1 个答案:

答案 0 :(得分:0)

如果您只有一个/species端点,并且您创建了所有类型的列表,则无法覆盖分配了零种类型的情况。这可能是也可能不是问题。您还必须始终加载所有物种以获得完整的类型列表。这可能会浪费很多带宽。

相反,请考虑以下方法:

端点/types为您提供所有可用类型的列表,这是您最初填写下拉列表所需的全部内容。现在,一旦用户选择了特定类型,您就可以调用端点/types/{typeName}/species,它会为您提供分配给{typeName}类型的所有物种的列表。同样,您只是加载了用户想要查看的数据块。

使用这种方法,您可以避免在应用程序达到目的之前必须在前端聚合数据并且必须下载完整的数据集。

旁注:物种is also species的单数,不是特别的。 : - )