职责划分
所有的业务逻辑实现均封装于service
层中,不推荐实现于控制器api
中。service
层的包名只有一个,通过面向对象的方式进行封装。api
层在使用的时候只会看到几个公开的业务逻辑封装对象。
数据校验
与客户端定义的输入接口是由api
层的代码来做的校验,service
层的代码仅对内部定义的参数进行必要的校验;有时往往也不需要做参数校验,认为内部调用的参数都是可信任的。例如:
注册逻辑:
内部引用
在service
内部的对象之间存在相互引用,直接使用对应的变量即可,例如:
实现代码
https://github.com/gogf/gf-demos/blob/master/app/service/user.go