如何设计基于Configuration ID查询Cluster列表的API?资源从属存疑
API设计疑问:关联资源的列表获取路径选择
我有两个独立资源:configurations 和 clusters,它们的基础API路径分别是:
/clusters /configurations
其中clusters是通过configuration创建的。现在需要设计一个API,用来获取通过指定configuration ID创建的clusters列表。我初步考虑的实现路径是:
/configurations/{:config-id}/clusters
但我有个困惑:clusters并不是configuration的子资源,这种路径设计是否合适?
可行方案分析
方案一:保留嵌套路径
虽然clusters不是严格的configuration子资源,但从资源间的创建关联关系来看,这种嵌套路径是完全合理的。它直接传递了“获取由某个configuration创建的clusters列表”的语义,是REST API中通过关联关系组织路径的常见做法,能让调用者一眼理解接口的用途。
方案二:用查询参数过滤
如果更强调clusters作为独立资源的属性,可以在clusters的基础路径上添加过滤参数:
/clusters?configuration-id={:config-id}
这种方式明确以clusters为核心资源,通过参数筛选出符合条件的结果,适合需要突出资源独立性的场景。
选择建议
两种方案都符合REST设计规范,具体选哪种看你的API语义侧重:
- 若想突出
configuration与clusters的创建依赖关系,嵌套路径更直观; - 若想强调
clusters作为独立资源的定位,查询参数的方式更合适。
内容的提问来源于stack exchange,提问作者Viks
相关产品推荐
相关产品推荐

