controller层和service层分工及service层错误返回问题
使用lavarel做项目时,有时会分controller层和service层,那具体应该如何分工来实现优雅的处理呢,假设有一个这样一个场景,一个多用户的博客系统,每个用户都可以创建自己的文章分类,同一个用户的多个分类名称不能相同,现在要实现修改分类的接口,大概有下面几个步骤,
1 验证提交的参数是否合法(分类id,分类名称)
2 检查分类id对应的数据是否存在
3 检查该分类数据是否属于当前用户(当然不能修改别人的分类数据)
4 检查分类名称是否已存在
5 修改数据保存到数据库
以上面这个场景为例,哪些步骤应该放在controller?如果在service层出现错误,如分类名已存在,应该如何处理及返回呢?
不管哪一步出现问题,直接抛异常,异常可以在异常捕获里面处理,可以去看我写的摸鱼返回值。 控制器配合 自动验证做数据验证,简单的数据拼装。 服务层做真正的数据处理。
尽量不在控制器里面写复杂的业务代码。