Restful 风格的 Api 与 控制器、方法应该如何对应?
Laravel 的资源控制器在只有 1 个控制器时,很好理解,大概是这样的:
GET /photos
对应的是 PhotoController
的 index
方法,获取所有照片
GET /photos/{photo}
对应的是 PhotoController
的 show
方法,获取单张照片
现在如果多出一个控制器 CategoryController
GET /categories
对应的是 CategoryController
的 index
方法,获取所有分类
GET /categories/{category}
对应的是 CategoryController
的 show
方法,获取单个分类
我如果要获取分类 1 下的所有照片,按照 Restful Api 的设计:
路由是 /categories/1/photos
此时这个路由应该对应 CategoryController
的 getPhotos
方法
还是对应 PhotoController
的 getPhotos
方法?
如果对应 PhotoController
的 getPhotos
方法,是不是可以设计成 photos?category=1
更合适?
这样的话,PhotoController
就不需要 getPhotos
方法了,直接就对应 index
方法,然后在index
方法里根据 category
参数进行筛选照片即可。
以上情况应该如何选择?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
其实这里要看你业务逻辑,RESTful 本身没有那么复杂,也不是万能灵药。只要方便理解,其实怎么做都可以。
具体到你的需求,不知道是不是一个照片应用?如果是的话,理论上
/categories/1
就应该返回所有category=1
的照片。/categories/1/{xxxx}
应该返回分类的属性xxxx
。至于放在哪个 controller 里,我倾向于放在
PhotoController@index
。