@RequestBody、@RequestParam、@PathVariable注解的参数使用参数正则校验

本文介绍了如何在SpringMVC中使用Lombok的@Validated注解对@RequestBody、@RequestParam和@PathVariable进行正则表达式校验,以及它们各自校验规则的设置和异常处理机制。
摘要由CSDN通过智能技术生成

本次主要介绍@RequestBody、@RequestParam、@PathVariable如何使用正则校验

@RequestBody

参数DTO

import lombok.Data;

import javax.validation.constraints.Pattern;

/**
 * Validated正则校验@RequestBody测试Dto
 *
 * @author zj1250
 * date 2024/04/16
 */
@Data
public class TestRequestBodyDto {
    @Pattern(regexp = "^[A-Za-z0-9]+$", message = "accountCode参数格式错误")
    private String accountCode;

    @Pattern(regexp = "^[0-9]+$", message = "phoneNumber参数格式错误")
    private String phoneNumber;
}
import io.swagger.annotations.ApiOperation;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

/**
 * Validated参数校验测试类
 *
 * @author zj1250
 * date 2024/04/16
 */
@RestController
public class TestValidatedController {

    @ApiOperation("@RequestBody参数校验")
    @PostMapping("/testRequestBody")
    public void testRequestBody(@Validated @RequestBody TestRequestBodyDto dto) {

    }

}

@RequestBody参数类型的需要在@RequestBody前加上@Validated才能保证参数校验生效。

@RequestParam

import io.swagger.annotations.ApiOperation;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import javax.validation.constraints.Pattern;

/**
 * Validated参数校验测试类
 *
 * @author zj1250
 * date 2024/04/16
 */
@RestController
@Validated
public class TestValidatedController {

    @ApiOperation("@RequestParam参数校验")
    @PostMapping("/testRequestParam")
    public void testRequestBody(@RequestParam @Pattern(regexp = "^[A-Za-z0-9]+$", message = "accountCode参数格式错误") String accountCode) {

    }

}

@RequestParam参数类型的需要在类上加上@Validated才能保证参数校验生效。

@PathVariable

import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;


/**
 * Validated参数校验测试类
 *
 * @author zj1250
 * date 2024/04/16
 */
@RestController
public class TestValidatedController {

    @ApiOperation("@PathVariable参数校验")
    @PostMapping("/testPathVariable/{accountCode:^[A-Za-z0-9]+$}")
    public void testRequestBody(@PathVariable("accountCode") String accountCode) {

    }

}

@PathVariable参数校验比较特殊,在path中加上:正则表达式进行校验,在测试的时候,需要注意的是如果不满足该正则规则,接口会返回404。而不是参数校验失败。

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
@RequestBody、@PathVariable和@RequestParamSpring MVC框架中常用的注解,用于处理请求参数的传递和接收。 - @RequestBody注解表示请求参数将被解析为请求体中的JSON数据,并绑定到方法参数上。通常在后期开发中,当发送的请求参数超过一个时,推荐使用@RequestBody注解处理。示例代码如下: ```java @PostMapping public R<String> save(@RequestBody DishDto dishDto) { dishService.saveWithFlavor(dishDto); return R.success("菜品添加成功"); } ``` - @PathVariable注解用于接收请求路径中的变量值。通常在使用RESTful风格进行开发时,当参数数量较少时,可以使用@PathVariable注解来传递id值。示例URL格式如下: ``` http://localhost:8080/dish/1552978624443916290/zhangsan ``` - @RequestParam注解用于接收请求参数。如果发送的是非JSON格式的数据,可以选用@RequestParam注解来接收请求参数。示例URL格式如下: ``` http://localhost:8080/dish?ids=1552978624443916290 ``` 需要注意的是,在GET请求中,可以使用@PathVariable和@RequestParam注解,但不可以使用@RequestBody注解,因为GET请求没有请求体。而在POST请求中,@RequestBody接收的是JSON数据,@RequestParam接收的是form表单提交的数据。 此外,需要明确的是,在一个方法中,@PathVariable和@RequestParam可以使用多次,但@RequestBody只能使用一次。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [@RequestBody、@PathVariable、@RequestParam三个注解用法与区别](https://blog.csdn.net/zqm1992409670/article/details/126136819)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值