毫无疑问,Spring MVc 对 Restful ⻛格请求是支持的。
一、Restful 相关概念
1、什么是 Restful?
Restful 是一种 web 软件架构⻛格,它不是标准也不是协议,它倡导的是一个资源定位及资源操作的⻛格。
2、什么是 REST?
REST(英文:Representational State Transfer,简称 REST)描述了一个架构样式的网络系统, 比如 web 应用程序。
它并没有一个明确的标准,而更像是一种设计的⻛格。
它本身也并没有什么实用性,其核心价值在于如何设计出符合 REST ⻛格的网络接口。
3、Restful 的优点
它结构清晰、符合标准、易于理解、扩展方便,所以正得到越来越多网站的采用。
4、Restful 的特性
1)资源(Resources)
网络上的一个实体,或者说是网络上的一个具体信息。
它可以是一段文本、一张图片、一首歌曲、一种服务,总之就是一个具体的存在。
可以用一个 URI(统一资源定位符)指向它,每种资源对应一个特定的 URI 。
要获取这个资源,访问它的 URI 就可以,因此 URI 即为每一个资源的独一无二的识别符。
2)表现层(Representation)
把资源具体呈现出来的形式,叫做它的表现层(Representation)。
比如,文本可以用 txt 格式表现,也可以用 HTML 格式、XML 格式、JSON 格式表现,甚至可以采用二进 制格式。
3)状态转化(State Transfer)
每发出一个请求,就代表了客户端和服务器的一次交互过程。
HTTP 协议,是一个无状态协议,即所有的状态都保存在服务器端。
因此,如果客户端想要操作服务器, 必须通过某种手段,让服务器端发生“状态转化”(State Transfer)。
而这种转化是建立在表现层之上的,所以就是“表现层状态转化”。
具体说, 就是 HTTP 协议里面,四个表示操作方式的动词:GET、POST、PUT、DELETE。
它们分别对应四种基本操作:GET 用来获取资源,POST 用来新建资源,PUT 用来更新资源,DELETE 用来删除资源。
5、Restful 的示例
rest 是一个 url 请求的⻛格,基于这种⻛格设计请求的 url。
1)没有 rest 的话,原有的 url 设计:
http://localhost:8080/user/queryUserById.action?id=3
url 中定义了动作(操作),参数具体锁定到操作的是谁。
2)有了 rest ⻛格之后。
rest 中,认为互联网中的所有东⻄都是资源,既然是资源就会有一个唯一的 uri 标识它,代表它。
http://localhost:8080/user/3:代表的是 id 为 3 的那个用户记录(资源)。
3)锁定资源之后如何操作它呢?常规操作就是增删改查。
根据请求方式不同,代表要做不同的操作。
get 查询,获取资源;
post 增加,新建资源;
put 更新;
delete 删除资源。
rest ⻛格带来的直观体现:就是传递参数方式的变化,参数可以在 uri 中了。
/account/1 HTTP GET :得到 id = 1 的 account;
/account/1 HTTP DELETE:删除 id = 1 的 account;
/account/1 HTTP PUT:更新 id = 1 的 account。
6、URL
资源定位符,通过 URL 地址去定位互联网中的资源(抽象的概念,比如图片、视频、app服务等)。
7、Restful ⻛格 URL
互联网所有的事物都是资源,要求 URL 中只有表示资源的名称,没有动词。
8、Restful ⻛格资源操作
使用 HTTP 请求中的 method 方法 put、delete、post、get 来操作资源。分别对应添加、删除、修改、查询。不过一般使用时还是 post 和 get,put 和 delete 几乎不使用。
9、Restful ⻛格资源表述
可以根据需求对 URL 定位的资源返回不同的表述(也就是返回数据类型,比如 XML、JSON 等数据格式)。
二、Spring MVC 对 Restful 的支持⻛格请求
Spring MVC 支持 Restful ⻛格请求,具体讲的就是使用 @PathVariable 注解获取 Restful ⻛格的请求 URL 中的路径变量。
示例代码
1、前端 jsp ⻚面
<div>
<h2>Spring MVC 对 Restful ⻛格 url 的支持</h2>
<fieldset>
<p>测试用例:Spring MVC 对 Restful ⻛格 url 的支持</p>
<a href="/demo/handle/15">rest_get 测试</a>
<form method=