REST架构中消息资源集合的两种返回方式哪种符合规范?
结论
符合REST规范的最优方案是 /messages?view=mandatories,各方案的对比分析如下:
- 方案1
/messages/mandatories:REST规范中路径段的作用是标识独立的资源/子资源,「必填消息」本质是消息集合的过滤子集,并非独立的子资源类型,将过滤条件放在路径中会混淆资源定位和过滤逻辑,不符合设计规范。 - 方案3
/messages?mandatoryListing=true:用布尔类型查询参数控制返回视图的扩展性极差,如果后续新增第三种消息查询场景(比如草稿消息、归档消息),需要额外新增独立的布尔参数,接口会越来越臃肿,维护成本高。 - 方案4
/mandatory-messages:直接将过滤后的子集定义为根级别资源,会破坏资源类型的统一性,必填消息本质还是消息资源的一部分,单独做根资源会导致同类型资源的接口逻辑分散,后续迭代统一调整消息接口时需要改多处实现。 - 方案2
/messages?view=mandatories:完全符合REST设计原则:/messages准确定位了消息集合这个核心资源,view查询参数用来指定该资源的返回视图,既实现了不同场景下的字段裁剪,也有很好的扩展性,后续新增其他视图只需要新增view的枚举值即可,不需要修改路径结构。
如果需要更灵活的字段自定义能力,也可以补充fields参数让调用方自主选择返回字段,但view参数更适配这类固定的预设业务场景,对调用方的使用成本更低。
内容的提问来源于stack exchange,提问作者Jhoel Bagnasco
相关产品推荐
相关产品推荐

