【问题标题】:Which controller to place API endpoints放置 API 端点的控制器
【发布时间】:2018-11-27 04:06:12
【问题描述】:

在 .Net Core 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/schools/{id}/students

进入 SchoolsController 或 StudentsController?我很想把它放在 SchoolsController 下,因为路线表明这是关于学校的。但是,它返回学生,所以也许它在 StudentsContoller 中服务更好?或者我应该创建一个新的 SchoolsStudentsController 吗?

  1. /api/schools{id}/students

如果暴露成这样可能会更好:

/api/students?schoolId={id}

我觉得第一个选择更“RESTful”,但也许第二个选择也不错,因为我所做的只是返回一个学生列表,过滤到特定学校。如果我选择第二个选择,那么毫无疑问将代码粘贴到哪个控制器(逻辑上它会进入 StudentController)

我不确定 RESTful 架构中是否有任何关于此的最佳实践...谢谢

【问题讨论】:

    标签: rest url controller uri asp.net-core-webapi


    【解决方案1】:

    这里没有硬性规定。这完全取决于你。无论您将操作放置在何处,您都可以通过属性路由为它们分配它们应该具有的任何路由。很可能,您会将它们分解为单独的控制器,以尽量减少任何给定控制器中的代码量,但如果您只处理少数路由,则将它们全部驻留在同一个控制器中可能会非常好。同样,这是一个判断电话;只有你能做的。

    【讨论】:

    • 感谢克里斯的回复
    猜你喜欢
    • 1970-01-01
    • 2019-07-26
    • 2015-03-24
    • 2017-06-23
    • 2021-06-02
    • 1970-01-01
    • 2020-08-06
    • 2017-05-07
    • 2016-08-25
    相关资源
    最近更新 更多