SB 查询、添加数据的接口 实现 validation 数据校检

导入GAV  因为这个框架springboot 自带有 所以呢 不用版本:

SB  查询、添加数据的接口  实现 validation 数据校检

 

 

然后我们直接在请求类上写校检注解    【注: 这里的EbookQueryReq 是请求类  继承了 PageReq 类】

SB  查询、添加数据的接口  实现 validation 数据校检

 

 

因为我们查询的接口是暴露的 ,如果别人拿到了 ,查1000000000+条数据 我们服务器岂不是崩了 几千回 都不够嘛  ,所以这里针对这个解决进行校检:

因为查询是分包查询 所以这里直接设置:

SB  查询、添加数据的接口  实现 validation 数据校检

 

 可以看到 直接用注解。这只是设置了校检规则 ,让请求参数 page  和 size  有规定。

 

启用校检

启用的话要在控制器参数哪里写注解开启:

SB  查询、添加数据的接口  实现 validation 数据校检

 

 

我们测试一下:

SB  查询、添加数据的接口  实现 validation 数据校检

 

 

可以看到了报错,信息也是给出来了  因为最多就查询20 你既然查2000  那我没的说哈

 


 

 

既然现在知道怎么开启校检 和 设置校检规则  那么我们现在开始解决这个问题 并返回给前端 让他报个错,美滋滋:

SB  查询、添加数据的接口  实现 validation 数据校检

 

 是这个异常嘛  所以我们自定义异常咧:

SB  查询、添加数据的接口  实现 validation 数据校检
package com.bihu.study.Controller;

import com.bihu.study.Resp.CommonResp;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.validation.BindException;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;

@ControllerAdvice
public class ControllerExceptionHandler {
    private static final Logger LOG = LoggerFactory.getLogger(ControllerExceptionHandler.class);

    /**
     * 校验异常统一处理
     */
    @ExceptionHandler(value = BindException.class)
    @ResponseBody
    public CommonResp validExceptionHandler(BindException e) {
        CommonResp commonResp = new CommonResp();   //新建一个请求类
        //打印LOG
        LOG.warn("参数校验失败:{}", e.getBindingResult().getAllErrors().get(0).getDefaultMessage());  
        //设置请求失败
        commonResp.setSuccess(false);
        //把我们失败的默认信息返回给前端  
        commonResp.setMessage(e.getBindingResult().getAllErrors().get(0).getDefaultMessage());
        return commonResp;
    }
}
View Code

简简单单!

SB  查询、添加数据的接口  实现 validation 数据校检

 

 

前端收到false 那么就显示message 即可,自己发挥.

 

上一篇:Spring国际化


下一篇:第一个机器学习项目--简单分类问题多算法比较全流程Python实现