控制器Controller
Controller中不允许编写业务逻辑处理。
原则上禁止在Controller中使用事务注解
so-fast框架规定控制器的职责是负责接受用户的请求,以及将业务处理结果返回给用户的流程控制。在控制器中不应该编码业务逻辑处理代码,业务逻辑代码应该编写在Service层,控制器只负责调用获取结果。
Controller类的定义
Controller的定义需要遵循以下规范:
@RestController注解,表示提供rest api
@RequestMapping注解,指定api的通用前缀path,path需遵循REST规范,使用名词来表示资源路径
@Api注解,书写swagger文档
需要继承父类BaseController
Good:
@Api(value = "字典数据操作API", tags = "字典数据")
@RestController
@RequestMapping("/dict/data")
public class DictDataController extends BaseController {
Controller中的Method定义
Method的定义需要遵循以下编码规范:
使用@GetMapping或@PostMapping注解,指定api的path,以及请求Method。
使用@LogOperator注解,进行操作日志的记录
使用@ApiOperation注解,书写swagger文档
使用R<?>的泛型作为统一响应体
Good:
@ApiOperation(value = "根据ID查询")
@LogOperator(title = "字典管理-根据ID查询字典", type = Constants.SELECT_OPERATOR)
@GetMapping(value = "/{id}")
public R<DictData> getById(@PathVariable("id") String id) {
return R.data(iDictDataService.getById(id));
}
注意:R<?>泛型需要根据实际返回值的类型进行具体化,不推荐直接写R