You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rails API最佳设计方案:查询指定用户关联的全部学校记录

Rails API 获取用户关联学校的最优路由设计方案

按照RESTful API设计规范和Rails官方路由惯例,最优实现方案选择如下:

最优方案:使用嵌套资源路由,绑定到SchoolsController的index动作

你只需要在路由文件中配置嵌套资源即可,不需要新增自定义路由,也不需要额外创建控制器:

# config/routes.rb
resources :users do
  # 仅保留查询用户关联学校列表的接口
  resources :schools, only: [:index]
end

生成的路由规则为 GET /users/:user_id/schools,完全满足需求:

  • 语义清晰:接口路径直接表达「获取指定ID用户关联的学校列表」的含义,前端不需要额外查文档就能理解接口用途
  • 职责分明:查询的核心资源是学校,所以放在SchoolsController处理,符合单一职责原则
  • 符合Rails惯例:不需要写额外的自定义路由规则,后续维护成本极低

其他方案的弊端

  • 不要在UsersController新增user-schools路由:UsersController的职责是处理用户资源本身的CRUD操作,把跨资源的查询逻辑放在这里会导致控制器职责混乱,后续迭代容易出现冗余代码
  • 不要单独创建user-schools控制器:只有当你需要操作「用户-学校」的关联关系本身(比如给用户绑定学校、解绑学校、修改关联属性)时,才需要单独创建关联资源的控制器,你现在只是查询用户下的学校列表,额外创建控制器只会增加代码冗余
  • 不要在SchoolsController新增schools-user自定义路由:自定义命名路由不符合REST语义,其他开发者接手项目时很难快速理解接口用途,可维护性差

内容的提问来源于stack exchange,提问作者Marcel Degas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 02:06:02