java SpringBoot 注册登录API 实现

62 阅读1分钟

注册登录 - BO接受前端参数验证



@PostMapping("login") //Valid 校验
public GraceJSONResult login(@Valid @RequestBody RegistLoginBO registLoginBO,
                             //BindingResult result, //对代码有侵入性,放到 GraceExceptionHandler
                             HttpServletRequest request) throws  Exception  {
                             

return GraceJSONResult.ok();

}


@ControllerAdvice // 在Spring Boot中,可以使用@ControllerAdvice注解来创建全局异常处理类,以便统一处理不同控制器中抛出的异常。
public class GraceExceptionHandler {
    // 校验不通过异常与拦截器整合返回json对象, 方法参数校验不通过
    @ExceptionHandler(MethodArgumentNotValidException.class)
    @ResponseBody
    public GraceJSONResult returnMethodArgumentNotValidException(MethodArgumentNotValidException e){
//        e.printStackTrace();

        BindingResult result =  e.getBindingResult();
        Map<String,String> map = getErrors(result);

        return  GraceJSONResult.errorMap(map);
    }

    public Map<String, String> getErrors(BindingResult result) {
        Map<String, String> map = new HashMap<>();
        List<FieldError> errorList = result.getFieldErrors();
        for (FieldError ff : errorList) {
            //错误所对应的属性字段名
            String field = ff.getField();
            //错误的信息
            String msg = ff.getDefaultMessage();
            map.put(field, msg);
        }
        return map;

    }
}

pom.xm 引入 hibernate

<!--        引入hibernate 校验-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-validation</artifactId>
        </dependency>

创建 RegistLoginBO

// BO = Bussniss object 业务object
@Data
@ToString
@AllArgsConstructor
@NoArgsConstructor
public class RegistLoginBO {
    @NotBlank(message = "手机号不能为空")
    @Length(min = 11 , max = 11, message = "手机号长度不正确")
    private String  mobile;

    @NotBlank(message = "验证码不能为空")
    private String verifyCode;
}