亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

使用javax.validation.constraints對請求體進行統(tǒng)一校驗

 更新時間:2024年07月04日 08:54:05   作者:半山驚竹  
這篇文章主要介紹了使用javax.validation.constraints對請求體進行統(tǒng)一校驗方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

一、序言

在處理請求的時候,通常需要對參數(shù)進行校驗是否為空,參數(shù)的長度等進行校驗,

如果在controller層一個一個的寫校驗就很麻煩,于是就有了javax.validation.constraints包。

二、注解類型

不同的注解用于不同的數(shù)據(jù)類型,小伙伴們可以下載源碼看一些常用的比如非空限制的注解的區(qū)別,

我這里截幾個圖:

所以我一般的處理是,如果是字符串類型就用@NotBlank,

如果是集合數(shù)組之類就用@NotEmpty,如果是對象就用@NotNull

當(dāng)然還有別的包的校驗類型,比如限制請求參數(shù)的長度就可以用到另外一個包里的注解了,在pom中增加依賴:

<dependency>
	<groupId>org.hibernate.validator</groupId>
	<artifactId>hibernate-validator</artifactId>
	<version>6.0.17.Final</version>
	<scope>compile</scope>
</dependency>

三、使用注解

3.1 請求實體類增加注解

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;


/**
 * @author FanHuiFang
 * @version 1.0
 * @date 2024年04月27日 19:58
 */
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class UserSaveReq {
    @NotBlank(message = "name不能為空")
    private String name;

    @NotNull(message = "年齡不能為空")
    private Long age;

    @NotEmpty(message = "朋友列表不能為空")
    private List<String> friends;

    @NotNull(message = "客戶手機號不能為空")
    @Length(min = 8, max = 16, message = "客戶手機號不合法")
    private String userPhone;
}

3.2 控制層

import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import org.springframework.validation.Errors;

@PostMapping(value = "/saveUser")
public ResultBean<String> saveUser(@Valid @RequestBody UserSaveReq req, Errors errors) {
    if (Objects.isNull(req)) return ResultBean.fail("缺少必要的請求參數(shù)");
    if (errors.hasErrors() && Objects.nonNull(errors.getFieldError())) {
        String errorMessage = errors.getFieldError().getDefaultMessage();
        log.error("保存用戶信息時請求參數(shù)錯誤:{}", errorMessage);
        return ResultBean.fail(errorMessage);
    }
    //保存處理......
    
}

當(dāng)進行請求的時候,如果缺少某個參數(shù),或者比如長度不對,就會返回異常信息,這樣就不用一個個的進行校驗了。

注意:這里請求參數(shù)中需要加上@Valid注解,如果不加,應(yīng)該是校驗沒有生效的

比如手機號號長度不對,就會返回

{
    "code": 0,
    "message": "客戶手機號不合法",
    "data": null
}

這里也附帶一下我用的ResultBean,以免看的云里霧里的:

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.ToString;

import java.io.Serializable;

/**
 * @author FanHuiFang
 * @version 1.0
 * @date 2024年04月27日 21:50
 */

@Builder
@Data
@AllArgsConstructor
@ToString
public class ResultBean<T> implements Serializable {
    private Integer code;
    private String message;
    private T data;


    public ResultBean(int code, String message, T data) {
        this.code = code;
        this.data = data;
        this.message = message;
    }

    public ResultBean(Integer code, String message) {
        this.code = code;
        this.message = message;
    }

    public static <T> ResultBean<T> data(T data) {
        return data("操作成功", data);
    }

    public static <T> ResultBean<T> data(String message, T data) {
        return data(1, message, data);
    }

    public static <T> ResultBean<T> data(int code, String message, T data) {
        return new ResultBean<>(code, message, data);
    }


    public static <T> ResultBean<T> fail(String message, T data) {
        return new ResultBean<>(0, message, data);
    }

    public static <T> ResultBean<T> fail(Integer code, String message) {
        return new ResultBean<>(code, message);
    }

    public static <T> ResultBean<T> fail(String message) {
        return new ResultBean<>(0, message, null);
    }
}

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論