Restful 风格的 Api 与 控制器、方法应该如何对应?

发布于 2022-09-11 21:26:01 字数 1100 浏览 42 评论 0

Laravel 的资源控制器在只有 1 个控制器时,很好理解,大概是这样的:

GET /photos 对应的是 PhotoControllerindex 方法,获取所有照片

GET /photos/{photo} 对应的是 PhotoControllershow 方法,获取单张照片


现在如果多出一个控制器 CategoryController

GET /categories 对应的是 CategoryControllerindex 方法,获取所有分类

GET /categories/{category} 对应的是 CategoryControllershow 方法,获取单个分类


我如果要获取分类 1 下的所有照片,按照 Restful Api 的设计:

路由是 /categories/1/photos

此时这个路由应该对应 CategoryControllergetPhotos 方法

还是对应 PhotoControllergetPhotos 方法?


如果对应 PhotoControllergetPhotos 方法,是不是可以设计成 photos?category=1 更合适?

这样的话,PhotoController 就不需要 getPhotos 方法了,直接就对应 index 方法,然后在index 方法里根据 category 参数进行筛选照片即可。

以上情况应该如何选择?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

撕心裂肺的伤痛 2022-09-18 21:26:01

其实这里要看你业务逻辑,RESTful 本身没有那么复杂,也不是万能灵药。只要方便理解,其实怎么做都可以。

具体到你的需求,不知道是不是一个照片应用?如果是的话,理论上 /categories/1 就应该返回所有 category=1 的照片。/categories/1/{xxxx} 应该返回分类的属性 xxxx

至于放在哪个 controller 里,我倾向于放在 PhotoController@index

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文