post参数校验系列二


前言

本文主要介绍在post方式下,利用@Valid和@Validated校验参数的方式。

格式校验

代码如下:

package com.yeso.manager.controller;

import com.yeso.manager.common.Result;
import com.yeso.manager.domain.dto.DemoDTO;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.validation.Valid;

/**
 * @Author lp
 * @Date 2023/12/5
 */
@RequestMapping("/demo")
@RestController
public class Demo {

    @PostMapping("/checkData")
    public Result checkData(@RequestBody @Valid DemoDTO demoDTO) {
        return Result.success("数据格式校验成功!");
    }
}

package com.yeso.manager.domain.dto;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.*;
import java.util.List;

/**
 * @Author lp
 * @Date 2023/12/5
 */
@Data
@ApiModel("demo(DTO)")
public class DemoDTO {

    @ApiModelProperty(name = "年龄",required = true)
    @NotNull(message = "年龄不能为空")
    @Min(value = 1,message = "年龄最小为1")
    @Max(value = 130,message = "年龄最大为130")
    private Integer age;

    @ApiModelProperty(name = "姓名",required = true)
    @NotBlank(message = "姓名不能为空")
    @Length(min = 1,max = 10,message = "名称长度在1-10之间")
    private String name;

    @ApiModelProperty(name = "手机",required = true)
    @NotBlank(message = "手机不能为空")
    @Pattern(regexp = "^1([38][0-9]|4[579]|5[0-3,5-9]|6[6]|7[0135678]|9[89])\\d{8}$",message = "手机格式错误")
    private String phone;

    @ApiModelProperty(name = "邮箱",required = true)
    @NotBlank(message = "邮箱不能为空")
    @Email(regexp = "^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)+$",message = "邮箱格式错误")
    private String email;

    @ApiModelProperty(name = "邮箱1",required = true)
    @NotBlank(message = "邮箱1不能为空")
    @Pattern(regexp = "^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)+$",message = "邮箱1格式错误")
    private String email1;

    @ApiModelProperty(name = "爱好集合",required = true)
    @NotEmpty(message = "爱好集合不能为空")
    private List<String> hobby;
}



测试结果:

总结

一、@Pattern其实可以添加正则表达式,因此可以自定义出各种符合要求的判断格式。
二、@Email虽然和@Pattern都可以校验邮箱,但@Email已经说明了是邮箱校验,因此里面的正则校验格式必须符合邮箱的格式。
例如:@Pattern里面的regexp可以写任意的正则校验格式,而@Email里面的regexp只能写校验邮箱的正则表达式,不然校验无效。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值