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读取resources下的文件以及resources的资源路径
SpringBoot读取resources下的文件以及resources的资源路径
52 0
|
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)
40 0
如何根据文件夹中文件,生成对应名字的图片,名称一样的路径,这里用到了变量,将集合定义在外面,字符串拼接,正则表达式截取.jpg文件
如何根据文件夹中文件,生成对应名字的图片,名称一样的路径,这里用到了变量,将集合定义在外面,字符串拼接,正则表达式截取.jpg文件
|
4天前
|
Java
自主定义访问路径-----SpringBoot自主定义静态资源访问路径的方法
自主定义访问路径-----SpringBoot自主定义静态资源访问路径的方法
|
3天前
|
Java 文件存储
软件开发常用之SpringBoot文件上传和下载功能(上){fileName},利用hutool提供的依赖,拿到当前目录的路径,System.getProperty从变量获取路径 ,不存在就用mkdi
软件开发常用之SpringBoot文件上传和下载功能(上){fileName},利用hutool提供的依赖,拿到当前目录的路径,System.getProperty从变量获取路径 ,不存在就用mkdi
|
9天前
|
Java
SpringBoot修改访问路径
SpringBoot修改访问路径
|
2月前
|
JSON 前端开发 Java
SpringBoot之JSON参数,路径参数的详细解析
SpringBoot之JSON参数,路径参数的详细解析
33 0
|
2月前
|
Java
SpringBoot配置图片访问404SpringBoot配置图片访问路径springboot如何访问图片
SpringBoot配置图片访问404SpringBoot配置图片访问路径springboot如何访问图片
24 0
|
2月前
|
Java
SpringBoot启动指定配置文件路径
SpringBoot启动指定配置文件路径
32 0
|
1天前
|
JavaScript Java 测试技术
基于SpringBoot+Vue的学生成绩管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue的学生成绩管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
16 0