控制器(Controller)规范
控制器注解引入
- @RestController:标注类为Restful规范的控制器。
- @RequestMapping:请求路径,需遵守Restful规范。
- RequiredArgsConstructor(onConstructor = @__(@Autowired)):
设定请求方式
- 查询方法:@GetMapping
- 添加:@PostMapping
- 修改:@PutMapping
- 删除:@DeleteMapping
不允许使用:
@RequestMapping(method =XXX),例如:@RequestMapping(value = "/token", method = RequestMethod.GET)
入参设计
- 入参需以lowerCamelCase风格命名。
设定请求参数方式
- 表单提交:直接使用VO类或具体参数名接收。
- @PathVariable:路径变量。
- @RequestParam:参数请求。
校验请求参数
- 非空:@NotNull(message = "XXX")。
- 使用注解@Validated,使得参数自动校验生效,它是spring-contex中的注解。
- 对象可在变量上进行定义。
方法返回
- 查询、修改、添加返回:操作后的对象。
- 其他业务操作返回:操作状态。
- 返回对象:ResultUtil.data(返回对象);
- 操作成功: ResultUtil.success("返回内容");
- 操作失败:ResultUtil.error("返回内容");
自动生成接口文档
- 使用SwaggerAPI。
- @Api():添加在类名之上,标注控制器实现内容。
- @ApiOperation(value = "XX"):添加方法名上,标注方法实现内容。
- @ApiImplicitParams、@ApiImplicitParam:添加方法名上,标注参数内容。
Controller示例代码:
/**
* 买家端,会员API
*
* @author Chopper
* @version v4.1
* @Date: 2020/11/16 10:07 下午
* @Description:
* @since
*/
@RestController
@Api(tags = "买家端,会员API")
@RequestMapping("/buyer/members")
@Transactional(rollbackFor = Exception.class)
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class MemberBuyerController {
/**
* 会员
*/
private final MemberService memberService;
/**
* 会员token生成
*/
private final MemberTokenGenerate memberTokenGenerate;
@ApiOperation(value = "登录接口")
@SystemLog(description = "登录", type = LogType.LOGIN)
@ApiImplicitParams({
@ApiImplicitParam(name = "username", value = "用户名", required = true, paramType = "query"),
@ApiImplicitParam(name = "password", value = "密码", required = true, paramType = "query")
})
@PostMapping(value = "/login")
public Result<Object> smsLogin(@NotNull(message = "用户名不能为空") @RequestParam String username,
@NotNull(message = "密码不能为空") @RequestParam String password) {
Member member = this.memberService.usernameLogin(username, password);
if (member == null) {
throw new ServiceException(MessageCode.E21004.getValue());
}
Token token = memberTokenGenerate.createToken(member.getUsername(), false);
return ResultUtil.data(token);
}
}