热点资讯

你的位置:光能科技(哈尔滨)有限公司 > 新闻资讯 > 复返的json数据可能并不是我们最终想要的

复返的json数据可能并不是我们最终想要的


发布日期:2024-07-03 16:14    点击次数:143


复返的json数据可能并不是我们最终想要的

一、自界说修改validate校验复返法子

@Valid ,@NotBlank,@NotNull是比拟常用的参数校验注解

然则validate参数校验失败后,复返的json数据可能并不是我们最终想要的,下图等于校验失败后它默许复返的数据

图片

一般情况下,我们可能只需要图中标红的阿谁请示信息就OK了

那若何改它的复返数据呢?

唯有添加一个相配惩办类就行了

/** * validate校验 相配融合捕捉惩办类 */@ControllerAdvicepublic class WebExceptionHandler {    /**     * 惩办肯求参数法子造作 @RequestBody上使用@Valid 实体上使用@NotNull等,考据失败后抛出的相配是MethodArgumentNotValidException相配     */    @ExceptionHandler(MethodArgumentNotValidException.class)    @ResponseBody    public JsonData MethodArgumentNotValidExceptionHandler(MethodArgumentNotValidException e) {        String message = e.getBindingResult().getAllErrors().stream().map(DefaultMessageSourceResolvable::getDefaultMessage).collect(Collectors.joining());        return JsonData.buildCodeAndMsg(BASE_VAILD_EXCEPTION.getCode(),message);    }    /**     * 惩办Get肯求中 使用@Valid 考据旅途中请务实体校验失败后抛出的相配     */    @ExceptionHandler(BindException.class)    @ResponseBody    public JsonData BindExceptionHandler(BindException e) {        String message = e.getBindingResult().getAllErrors().stream().map(DefaultMessageSourceResolvable::getDefaultMessage).collect(Collectors.joining());        return JsonData.buildCodeAndMsg(BASE_VAILD_EXCEPTION.getCode(),message);    }    /**     * 惩办肯求参数法子造作 @RequestParam上validate失败后抛出的相配是ConstraintViolationException     */    @ExceptionHandler(ConstraintViolationException.class)    @ResponseBody    public JsonData ConstraintViolationExceptionHandler(ConstraintViolationException e) {        String message = e.getConstraintViolations().stream().map(ConstraintViolation::getMessage).collect(Collectors.joining());        return JsonData.buildCodeAndMsg(BASE_VAILD_EXCEPTION.getCode(),message);    }    /**     * 参数法子相配     */    @ExceptionHandler(HttpMessageNotReadableException.class)    @ResponseBody    public JsonData HttpMessageNotReadableExceptionHandler(HttpMessageNotReadableException e) {        return JsonData.buildCodeAndMsg(BASE_VAILD_EXCEPTION.getCode(),"参数法子相配");    }}

设立完,看下服从

图片

不错看到咫尺复返的数据照旧是我们自界说的数据了

二、设立校验快速失败:唯有出现校验失败的情况,首页-盛 园慧坚果有限公司就范畴校验, 四川设建标牌有限公司不再进行后续的校验

validate参数校验默许的是一个参数校验失败后, 大观后台还会不息校验背面的参数,如下图,它会复返多个信息

图片

然则骨子情况一般是唯有有一个参数校验失败了,联系我们就范畴复返。那若何改成想要的这么呢?

很简短,亦然加一个设立类就好了(然则有的版块是不见效的)

/** * validate参数校验默许的是一个参数校验失败后,还会不息校验背面的参数 * 通过这个设立改成:校验参数时唯有出现校验失败的情况,就立即抛出对应的相配,范畴校验,不再进行后续的校验 */@Configurationpublic class WebConfig {    @Bean    public Validator validator() {        ValidatorFactory validatorFactory = Validation.byProvider(HibernateValidator.class)                .configure()                //failFast的预见唯有出现校验失败的情况,就立即范畴校验,不再进行后续的校验。                .failFast(true)                .buildValidatorFactory();        return validatorFactory.getValidator();    }    @Bean    public MethodValidationPostProcessor methodValidationPostProcessor() {        MethodValidationPostProcessor methodValidationPostProcessor = new MethodValidationPostProcessor();        methodValidationPostProcessor.setValidator(validator());        return methodValidationPostProcessor;    }}

设立好后,重启名堂,看下服从

图片

青铜峡市静奥羽毛有限公司

 不错看到就只复返了一条熟谙失败的请示。

合计对你有匡助的话,不错点个矜恤,点个赞业务合作,3Q~

本站仅提供存储办事,通盘内容均由用户发布,如发现存害或侵权内容,请点击举报。


上一篇:没有了
下一篇:没有了