SpringBoot 映射路径中 匹配正则表达式

简介: SpringBoot 映射路径中 匹配正则表达式


你好,我是博主宁在春

关于在映射路径中匹配正则表达式,我是第一次知道(原谅我的无知)。在之前都是手动判断(if、类型判断啥的)或者是添加验证。这次学长给了我一个项目,让我学习学习,就是在里面发现这个的。

一、曾经

像我以前的使用,都是像下面这种方式使用的,根本就没考虑这个问题😂

/**
 * 在请求中我们并没有对id的输入做限制,什么都可以输入
 * 我这里限制了id的类型为Long。
 * 如果输入字符进入,则会直接报400错误
 *
 * @param id
 * @return
 */
 @GetMapping("/{id}")
 public String demo1(@PathVariable("id") Long id){
     return "demo"+id.toString();
 }

输入字符,直接报400

1704461175636.jpg

输入数字可以正常访问。

1704461178407.jpg

这样的结果出现是我限制了id的类型为Long,我们换成String类型试试。

@GetMapping("/{id}")
 public String demo1(@PathVariable("id") String id){
     return "demo: "+id;
 }

结果就是都可以访问了。😂

1704461181157.jpg

思考:假定id一定需要为全数字,但是类型又为String,这种字符输入的是不是应该被抛掉,不应该请求进来勒?

二、使用正则表达式

正则表达式就是起这样的作用。

/**
 * 在这个请求中,我们就限制了 url中的id必须为数字类型
 * 输入非数字类型就会直接转到404
 * @param id
 * @return
 */
 @GetMapping("/{id:\d+}")
 public String demo(@PathVariable("id") Long id){
     return "demo"+id.toString();
 }

输入数字是可以正常访问的:

1704461235581.jpg

看看输入字符:

报的错误是没有找到,404,不是之前的请求错误。

1704461238280.jpg

我们接着换成String类型来试的话,结果也是一模一样的。

三、小结

使用正则表达式在Resulful风格中单参数时非常实用。

或者是在下面这样的情况下也可以非常实用,就是请求中既有一个单参数,又携带了一个Java对象。

@PostMapping("/{id:\d+}")
 public String demo2(@PathVariable("id") String id,@RequestBody BookDTO bookDTO){
     return "demo: "+id;
 }

四、自言自语

本文就是简单介绍了,具体使用具体情况具体分析啦。

希望本篇文章能让你感到有所收获!!!

我们:待别日相见时,都已有所成

\

目录
相关文章
|
2月前
|
前端开发 Java 数据库连接
Springboot-MyBatis配置-配置端口号与服务路径(idea社区版2023.1.4+apache-maven-3.9.3-bin)
Springboot-MyBatis配置-配置端口号与服务路径(idea社区版2023.1.4+apache-maven-3.9.3-bin)
33 0
|
19天前
|
Java
SpringBoot配置图片访问404SpringBoot配置图片访问路径springboot如何访问图片
SpringBoot配置图片访问404SpringBoot配置图片访问路径springboot如何访问图片
6 0
|
4月前
|
缓存 前端开发 JavaScript
SpringBoot中静态资源映射处理
SpringBoot中静态资源映射处理
42 0
|
5月前
|
前端开发 应用服务中间件 API
简单明了!网关Gateway路由配置filters实现路径重写及对应正则表达式的解析
简单明了!网关Gateway路由配置filters实现路径重写及对应正则表达式的解析
105 0
|
7月前
|
Java 数据安全/隐私保护 Spring
spring boot中获取所有RequestMapping的URL路径列表集
spring boot中获取所有RequestMapping的URL路径列表集
|
8月前
|
XML Java 数据格式
解决SpringBoot获取mapper.xml路径的问题
当mapper.xml与mapper.class放在同一文件夹下时,是不能够将xml文件打包进项目的,项目构建的时候不会加载到target文件夹中。在pom.xml中加入如下这句:
182 0
|
9月前
|
Java Nacos Spring
springboot 配置文件中的属性映射到实体类的属性中
springboot 配置文件中的属性映射到实体类的属性中
|
10月前
|
Java 测试技术 数据库连接
|
10月前
|
前端开发 JavaScript Java
【SpringBoot学习笔记 六】JSR303数据校验、日志配置及输出、静态资源映射
【SpringBoot学习笔记 六】JSR303数据校验、日志配置及输出、静态资源映射
53 0
|
11月前
|
Java 数据库
基于Springboot外卖系统03:pom.xml导入依赖+数据库配置文件+Boot启动类+静态资源映射
基于Springboot外卖系统03:pom.xml导入依赖+数据库配置文件+Boot启动类+静态资源映射
144 0