控制器(Controller)规范

  1. 控制器注解引入
    1. @RestController:标注类为Restful规范的控制器。
    2. @RequestMapping:请求路径,需遵守Restful规范。
    3. RequiredArgsConstructor(onConstructor = @__(@Autowired)):
  2. 设定请求方式
    1. ​ 查询方法:@GetMapping
    2. ​ 添加:@PostMapping
    3. ​ 修改:@PutMapping
    4. ​ 删除:@DeleteMapping

    不允许使用:

    @RequestMapping(method =XXX),例如:@RequestMapping(value = "/token", method = RequestMethod.GET)

  3. 入参设计
    1. 入参需以lowerCamelCase风格命名。
  4. 设定请求参数方式
    1. 表单提交:直接使用VO类或具体参数名接收。
    2. @PathVariable:路径变量。
    3. @RequestParam:参数请求。
  5. 校验请求参数
    1. 非空:@NotNull(message = "XXX")。
    2. 使用注解@Validated,使得参数自动校验生效,它是spring-contex中的注解。
    3. 对象可在变量上进行定义。
  6. 方法返回
    1. 查询、修改、添加返回:操作后的对象。
    2. 其他业务操作返回:操作状态。
      1. 返回对象:ResultUtil.data(返回对象);
      2. 操作成功: ResultUtil.success("返回内容");
      3. 操作失败:ResultUtil.error("返回内容");
  7. 自动生成接口文档
    1. 使用SwaggerAPI。
    2. @Api():添加在类名之上,标注控制器实现内容。
    3. @ApiOperation(value = "XX"):添加方法名上,标注方法实现内容。
    4. @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);
    }
}

results matching ""

    No results matching ""