Controller 层的职责

controller 层的主要职责:是对用户的输入进行校验、组织、重组、转换等,之后调用 service 层或者 repository 层对业务数据进行处理,同时对 service/repository 层的输出进行包装,不应该逾越其职责范围进行业务的处理或者数据层的读写

典型的 controller 代码结构如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
@ApiOperation(value = "获取首页数据", notes = "获取首页数据")
@ResponseStatus(HttpStatus.OK)
@GetMapping
public ResponseData index(HttpServletRequest request) {

// 校验参数
validParams(request);

// 包装并转换参数
BizData data = extractParam(request);

// 调用服务 A
Data data1 = serviceA.call(data);

// 调用服务 B
Data data2 = serviceB.call(data);

// 包装返回结果
Data result = wrap(data1, data2);

return result;
}

实例:

1
2
3
4
5
6
7
8
9
10
11
@ApiOperation(value = "创建Banner数据", notes = "创建Banner数据")
@ResponseStatus(HttpStatus.CREATED)
@PostMapping
public Banner create(@ApiParam(value = "Banner信息") @RequestBody Banner banner) {

// 校验参数
validBanner(banner);

// 调用服务,并(包装)返回结果
return bannerRepository.save(banner);
}