Spring中请求映射方式的分类

490 阅读3分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第12天

请求映射方式的分类

基于注解风格的Spring MVC,通过@RequestMapping注解指定请求映射的URL路径。URL路径映射常用的方式有:

  • 基于请求方式的URL路径映射
  • 基于Ant风格的URL路径映射
  • 基于RESTful风格的URL路径映射
基于请求方式的URL路径映射

我们之前的博文中提到过,可以使用@RequestMapping注解的method属性来限定当前方法匹配哪种类型的请求方式。

除了可以使用@RequestMapping注解来限定客户端的请求方式之外,从Spring4.3版本开始,还可以使用组合注解来完成客户端请求方式的限定。组合注解简化了常用的HTTP请求方式的映射,并且更好的表达了被注解方法的语义

组合注解:

  • @GetMapping:匹配GET方式的请求
  • @PostMapping:匹配POST方式的请求
  • @PutMapping:匹配PUT方式的请求
  • @DeleteMapping:匹配DELETE方式的请求
  • @PatchMapping:匹配PATCH方式的请求

例:

@GetMapping(value="/myController")
public void sayHi(){
    //...
}

这样注解我们就可以用组合注解来替代@RequestMapping注解,省去method属性,简化代码

基于Ant风格的URL路径映射

Spring MVC支持Ant风格的URL路径映射,所谓Ant风格其实就是一种通配符风格,可以在处理器映射路径中使用通配符对访问的URL路径进行关联。

Ant风格的通配符有三种:

  • ? 匹配任意单字符—— /ant?表示可以匹配/ant1、/ant2等后面加一个任意字符的路径
    • 匹配0或者任意数量的字符——/ant/表示可以匹配/ant/后接任意数量的任意字符的路径,如果是//ant,则字符数不能为0
  • ** 匹配0或者多级目录——/ant/**表示可以匹配/ant/后接任意层数的目录

如果当映射路径中有多个通配符,导致冲突,那么路径会遵守最长匹配原则去匹配

比如:/ant/a/path同时满足/**/path和/ant//path匹配规则,但最终会匹配/ant//path路径

基于RESTful风格的URL路径映射

REST是一种网络资源的访问风格,规范了对网络资源的访问方式。

REST所访问的网络资源可以是一段文本、一首歌曲、一种服务,总之就是一个具体的存在。每个网络资源都有一个URI指向它,要获取这个资源,访问它的URI就可以,因此URI即为每一个资源的独一无二的标识符

RESTful是按照REST风格访问网络资源,简单来说,RESTful就是把请求参数变成请求路径的一种风格。

传统风格:

http://.../findUserById?id=1

RESTful风格:

http://.../user/id/1

将动词findUserById变成了user名词

将参数?id=1变成了/id/1

RESTful风格在HTTP请求中,通过GET、POST、PUT和DELETE4个动词对应四种基本请求操作,具体如下所示:

  • GET——获取资源
  • POST——新建资源
  • PUT——更新资源
  • DELETE——删除资源

RESTful.jpg

使用RESTful风格的优势就在于路径的书写比较简便,并且通过地址无法得知要做何种操作,可以隐藏资源的访问行为