代码之家  ›  专栏  ›  技术社区  ›  Fabricio Rodriguez

放置API端点的控制器

  •  1
  • Fabricio Rodriguez  · 技术社区  · 7 年前

    在.NET核心2.1 Web API中,假设我有两个模型:

    Student
    School
    

    和两个控制器:

    StudentsController
    SchoolsController
    

    API公开这些端点以访问这些资源:

    /api/students
    /api/students/{id}
    /api/students/{id}/school
    
    /api/schools
    /api/schools/{id}
    /api/schools/{id}/students
    

    我有两个问题:

    1. 应该

      /API/学校/ID/学生

    去学校还是学生学校?我很想把它放在学校的控制之下,因为路线表明这是关于学校的。但是,它会回报学生,所以也许它会更好地服务于学生收费站?或者我应该创建一个新的学生控制器?

    1. /API/学校ID/学生

    如果暴露在以下环境中可能会更好:

    /api/students?schoolId={id}
    

    我觉得第一个选择更“安静”,但也许第二个选择也很好,因为我所做的就是返回一个学生名单,过滤到一个特定的学校。如果我选择了第二个选项,那么毫无疑问,代码应该插入哪个控制器(从逻辑上讲,它将进入学生控制器)。

    我不确定在RESTful体系结构中是否有任何与此相关的最佳实践…谢谢

    1 回复  |  直到 7 年前
        1
  •  1
  •   Chris Pratt    7 年前

    这里没有硬性规定。这完全取决于你。无论将操作放置在何处,都可以通过属性路由为它们分配应该具有的任何路由。很可能,您会将它们分成单独的控制器,只是为了最小化任何给定控制器中的代码量,但是如果您只处理少数路由,那么它们都可以驻留在同一个控制器中,这是非常好的。再说一次,这是一个判断的召唤,只有你才能做出。

    推荐文章