基于框架的注解验证

目录

引入依赖:

常见的注解:

数值相关的校验注解

日期和时间相关校验注解

常用特定用途校验注解

例:

编写后端验证的类:

使用到controller上:

通过swagger进行测试:

错误验证:

返回结果:

正确验证:

返回结果:


引入依赖:

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-validation</artifactId>
</dependency>

常见的注解:

注解

说明

示例

@NotNull

确保字段不为 null

@NotNull(message = "不能为空")

@Null

确保字段必须为 null

@Null(message = "必须为空")

@NotEmpty

确保集合、字符串、数组等非空(不能为空且长度大于 0)

@NotEmpty(message = "不可为空")

@NotBlank

确保字符串非空(忽略空格)

@NotBlank(message = "不可为空白")

@Size

限制字符串、集合、数组的长度或大小范围

@Size(min = 3, max = 10)

@Pattern

使用正则表达式校验字段格式

@Pattern(regexp = "\\d+", message = "必须是数字")

数值相关的校验注解

注解

说明

示例

@Min

指定最小值

@Min(value = 18, message = "年龄必须≥18")

@Max

指定最大值

@Max(value = 60, message = "年龄必须≤60")

日期和时间相关校验注解

注解

说明

示例

@Future

确保日期在未来

@Future(message = "日期必须是未来的时间")

@FutureOrPresent

确保日期在未来或现在

@FutureOrPresent(message = "日期不能是过去的时间")

@Past

确保日期在过去

@Past(message = "日期必须是过去的时间")

@PastOrPresent

确保日期在过去或现在

@PastOrPresent(message = "日期不能是未来的时间")

常用特定用途校验注解

注解

说明

示例

@Email

校验邮箱格式

@Email(message = "邮箱格式不正确")

@URL

校验 URL 格式

@URL(message = "必须是有效的URL")

@CreditCardNumber

校验信用卡号码

@CreditCardNumber(message = "无效的信用卡号码")

例:

编写后端验证的类:

package com.example.emos.wx.controller.form;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import io.swagger.annotations.ApiOperation;
import lombok.Data;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Pattern;

@Data
@ApiModel
public class TestSayHelloForm {
    @NotBlank  //非空字符串
    @Pattern(regexp = "^[\\u4e00-\\u9fa5]{2,15}$") //2到15个字符
    @ApiModelProperty("姓名")
    private String name;
}
  • @NotBlank:校验字段不能为空,并自动去除前后空格。

  • @Pattern:使用正则表达式校验字段格式,此处校验姓名必须是 2 到 15 个中文字符。

  • @ApiModelProperty:为 Swagger 文档提供字段描述。

注:正则表达式可以通过工具来编写

使用到controller上:

通过 POST 请求接收表单数据,并返回校验结果。 

package com.example.emos.wx.controller;

import com.example.emos.wx.common.util.R;
import com.example.emos.wx.controller.form.TestSayHelloForm;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;

import javax.validation.Valid;

@RestController
@RequestMapping("/test")
@Api("测试Web接口")
public class TestController {

    @ApiOperation("最简单的测试方法")
    @PostMapping("/sayHello")
    //@Valid:用于启用校验机制
    public R sayHello(@RequestBody @Valid TestSayHelloForm form) {
        return R.ok().put("message","Hello"+form.getName()+"!");
    }
}
  • @Valid:启用表单类的校验机制。

  • @RequestBody:将 JSON 数据映射为 TestSayHelloForm 对象。

通过swagger进行测试:

错误验证:

返回结果:

因为我们校验的name条件是 2-15个中文字符,显然“”String“并不符合条件,所以返回了错误的信息。

正确验证:

返回结果:

这次我们校验的name值在正确的范围内,所以返回正确的提示信息

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值