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;
 }

四、自言自语

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

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

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

\

目录
相关文章
|
1月前
|
存储 前端开发 JavaScript
springboot中路径默认配置与重定向/转发所存在的域对象
Spring Boot 提供了简便的路径默认配置和强大的重定向/转发机制,通过合理使用这些功能,可以实现灵活的请求处理和数据传递。理解并掌握不同域对象的生命周期和使用场景,是构建高效、健壮 Web 应用的关键。通过上述详细介绍和示例,相信读者能够更好地应用这些知识,优化自己的 Spring Boot 应用。
36 3
|
14天前
|
XML 安全 Java
Spring Boot中使用MapStruct进行对象映射
本文介绍如何在Spring Boot项目中使用MapStruct进行对象映射,探讨其性能高效、类型安全及易于集成等优势,并详细说明添加MapStruct依赖的步骤。
|
1月前
|
分布式计算 关系型数据库 MySQL
SpringBoot项目中mysql字段映射使用JSONObject和JSONArray类型
SpringBoot项目中mysql字段映射使用JSONObject和JSONArray类型 图像处理 光通信 分布式计算 算法语言 信息技术 计算机应用
57 8
|
1月前
|
JSON Java 数据格式
springboot中表字段映射中设置JSON格式字段映射
springboot中表字段映射中设置JSON格式字段映射
141 1
|
3月前
|
Java Spring
springboot静态资源目录访问,及自定义静态资源路径,index页面的访问
本文介绍了Spring Boot中静态资源的访问位置、如何进行静态资源访问测试、自定义静态资源路径和静态资源请求映射,以及如何处理自定义静态资源映射对index页面访问的影响。提供了两种解决方案:取消自定义静态资源映射或编写Controller来截获index.html的请求并重定向。
springboot静态资源目录访问,及自定义静态资源路径,index页面的访问
|
1月前
|
JavaScript 前端开发 Java
SpringBoot_web开发-webjars&静态资源映射规则
https://www.91chuli.com/ 举例:jquery前端框架
23 0
|
1月前
|
关系型数据库 MySQL Java
SpringBoot项目中mysql字段映射使用JSONObject和JSONArray类型
SpringBoot项目中mysql字段映射使用JSONObject和JSONArray类型
34 0
如何根据文件夹中文件,生成对应名字的图片,名称一样的路径,这里用到了变量,将集合定义在外面,字符串拼接,正则表达式截取.jpg文件
如何根据文件夹中文件,生成对应名字的图片,名称一样的路径,这里用到了变量,将集合定义在外面,字符串拼接,正则表达式截取.jpg文件
|
5月前
|
Java
自主定义访问路径-----SpringBoot自主定义静态资源访问路径的方法
自主定义访问路径-----SpringBoot自主定义静态资源访问路径的方法
|
5月前
|
Java 文件存储
软件开发常用之SpringBoot文件上传和下载功能(上){fileName},利用hutool提供的依赖,拿到当前目录的路径,System.getProperty从变量获取路径 ,不存在就用mkdi
软件开发常用之SpringBoot文件上传和下载功能(上){fileName},利用hutool提供的依赖,拿到当前目录的路径,System.getProperty从变量获取路径 ,不存在就用mkdi