REST API设计获取用户帖子的正确端点:/users/:id/posts还是/posts/user/:id
REST API端点设计:获取指定用户ID的帖子列表
首先给出结论:/users/:id/posts 是更符合REST设计规范的实现方案,具体原因如下:
- REST API的核心设计逻辑是围绕资源做层级化路由,帖子本身是从属用户的子资源,路由结构可以直接体现资源的从属关系:
/users/:id已经唯一标识了对应ID的用户资源,其后拼接/posts就自然代表该用户名下的所有帖子集合,语义完全自解释,调用方不需要额外查阅文档就能理解接口作用。 /posts/user/:id的设计不符合常规的资源分层逻辑,本质是把「用户ID过滤」的逻辑硬编码到了路由层级中,后续如果要新增更多过滤规则(比如按发布时间、帖子分类筛选用户的帖子),这种路由结构会越来越冗余难维护。而/users/:id/posts的结构可以直接通过查询参数扩展,比如/users/:id/posts?published_after=2024-01-01&category=tech,拓展性更强。- 从项目维护的角度看,层级化的资源路由更方便做统一的逻辑拦截,比如所有匹配
/users/:id/*规则的路由都可以统一做「用户ID有效性校验」「对应资源访问权限校验」,不需要单独为/posts/user/:id额外开发一套校验逻辑,能减少重复代码。
补充说明:如果你的业务中确实存在大量「脱离用户上下文,直接按用户ID过滤全量帖子」的需求,也可以额外保留
/posts?user_id=:id的接口作为补充,和/users/:id/posts共存适配不同调用场景,灵活度比/posts/user/:id更高。
内容的提问来源于stack exchange,提问作者user1089548
相关产品推荐
相关产品推荐

