SpringBoot 映射路径中 匹配正则表达式
highlight: a11y-dark theme: v-green
小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
你好,我是博主
宁在春
关于在映射路径中匹配正则表达式,我是第一次知道(原谅我的无知)。在之前都是手动判断(if、类型判断啥的)或者是添加验证。这次学长给了我一个项目,让我学习学习,就是在里面发现这个的。
一、曾经
像我以前的使用,都是像下面这种方式使用的,根本就没考虑这个问题😂
java
/**
* 在请求中我们并没有对id的输入做限制,什么都可以输入
* 我这里限制了id的类型为Long。
* 如果输入字符进入,则会直接报400错误
*
* @param id
* @return
*/
@GetMapping("/{id}")
public String demo1(@PathVariable("id") Long id){
return "demo"+id.toString();
}
输入字符,直接报400
输入数字可以正常访问。
这样的结果出现是我限制了id的类型为Long,我们换成String类型试试。
@GetMapping("/{id}")
public String demo1(@PathVariable("id") String id){
return "demo: "+id;
}
结果就是都可以访问了。😂
思考:假定id一定需要为全数字,但是类型又为String,这种字符输入的是不是应该被抛掉,不应该请求进来勒?
二、使用正则表达式
正则表达式就是起这样的作用。
java
/**
* 在这个请求中,我们就限制了 url中的id必须为数字类型
* 输入非数字类型就会直接转到404
* @param id
* @return
*/
@GetMapping("/{id:\d+}")
public String demo(@PathVariable("id") Long id){
return "demo"+id.toString();
}
输入数字是可以正常访问的:
看看输入字符:
报的错误是没有找到,404,不是之前的请求错误。
我们接着换成String类型来试的话,结果也是一模一样的。
三、小结
使用正则表达式在Resulful
风格中单参数时非常实用。
或者是在下面这样的情况下也可以非常实用,就是请求中既有一个单参数,又携带了一个Java对象。
java
@PostMapping("/{id:\d+}")
public String demo2(@PathVariable("id") String id,@RequestBody BookDTO bookDTO){
return "demo: "+id;
}
四、自言自语
本文就是简单介绍了,具体使用具体情况具体分析啦。
你好,我是博主
宁在春
:主页希望本篇文章能让你感到有所收获!!!
祝
我们:待别日相见时,都已有所成
。
\
- 「后端小伙伴来学前端了」Vue中 Slot 插槽的使用,同样也可以实现父子组件之间通信
- 「后端小伙伴来学前端了」为什么Vue在有了全局事件总线后还要引入Vuex呢?
- 「后端小伙伴来学前端了」Vue中利用全局事件总线实现组件之间通信
- Mysql 逻辑架构介绍
- Dockerfile中的保留字指令讲解
- 针对 SpringSecurity 鉴权流程做了一个详细分析,让你明白它是如何执行的!
- UML图 | 时序图(顺序、序列图)绘制
- 通过简单例子 | 快速理清 UML 中类与类的六大关系
- SpringBoot 整合 Thymeleaf & 如何使用后台模板快速搭建项目
- Netty | 工作流程图分析 & 核心组件说明 & 代码案例实践
- 通过简单例子 | 快速理清 UML 中类与类的六大关系
- JSON Web Token(缩写 JWT) 目前最流行、最常见的跨域认证解决方案
- SpringBoot 映射路径中 匹配正则表达式
- 通过生活案例快速 Get 线程池七个参数和工作原理
- SpringBoot实现固定、动态定时任务 | 三种实现方式