如何使用嵌入资源进行 DRY
How to DRY with embed resources
我目前正在设计一个将由 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 字段中选择类型来过滤物种。
在 Select 组件中维护 types
列表,并在 Specy
组件数组中维护 species
列表,这仍然是 DRY 吗?或者我应该找到一种方法来将从他们自己的端点获取的 types
注入 specy
?
如果您只有一个 /species
端点并且创建了所有类型的列表,您将无法涵盖分配了零种的类型的情况。这可能是也可能不是问题。您还必须始终加载所有物种以获得完整的类型列表。这可能会浪费很多带宽。
相反,请考虑以下方法:
端点 /types
为您提供了所有可用类型的列表,这是您最初填写下拉列表所需的全部内容。现在,一旦用户选择了特定类型,您就可以调用端点 /types/{typeName}/species
,它会为您提供分配给类型 {typeName}
的所有物种的列表。同样,您只是加载了用户想要查看的数据块。
使用这种方法,您既可以避免在前端聚合数据,也可以避免在应用程序实现其目的之前下载完整的数据集。
旁注:物种的单数 is also species,不是物种。 :-)
我目前正在设计一个将由 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 字段中选择类型来过滤物种。
在 Select 组件中维护 types
列表,并在 Specy
组件数组中维护 species
列表,这仍然是 DRY 吗?或者我应该找到一种方法来将从他们自己的端点获取的 types
注入 specy
?
如果您只有一个 /species
端点并且创建了所有类型的列表,您将无法涵盖分配了零种的类型的情况。这可能是也可能不是问题。您还必须始终加载所有物种以获得完整的类型列表。这可能会浪费很多带宽。
相反,请考虑以下方法:
端点 /types
为您提供了所有可用类型的列表,这是您最初填写下拉列表所需的全部内容。现在,一旦用户选择了特定类型,您就可以调用端点 /types/{typeName}/species
,它会为您提供分配给类型 {typeName}
的所有物种的列表。同样,您只是加载了用户想要查看的数据块。
使用这种方法,您既可以避免在前端聚合数据,也可以避免在应用程序实现其目的之前下载完整的数据集。
旁注:物种的单数 is also species,不是物种。 :-)