1.什么是RESTful
1.1.REST的由来
Roy Fielding博士提出了基于REST(Representational State Transfer)风格的软件架构模式,成为一种设计Web API的模式。(同时取代了SOAP的地位)
REST基于基于HTTP进行通信,并使用XML格式定义或JSON格式定义作为载体传输消息和数据,使得所有功能都已一种标准化Web服务的形式向外提供服务。这样做,能力四线功能代码与界面设计的完全分离,可以极大地把前端和后端的代码隔离,使得后端代码易于测试,前端代码编写更简单。
当一个Web应用以API的形式对外提供功能时,整个应用的结构就扩展为:
服务(资源+资源) + 前端交互(包括:PC、App、嵌入式设备、云服务)
1.2.Rest架构的主要原则
- ** 网络上的所有事物都被抽象为资源**
- ** 每个资源都有一个唯一的资源标识符**
- ** 同一个资源具有多种表现形式(xml,json等)**
- ** 对资源的各种操作不会改变资源标识符**
- ** 所有的操作都是无状态的**
- ** 符合REST原则的架构方式即可称为RESTful**
1.3.基于HTTP通信规范
每个资源都使用 URI (Universal Resource Identifier) 得到一个唯一的地址。所有资源都共享统一的接口,以便在客户端和服务器之间传输状态。
使用的是标准的 HTTP 方法,比如 POST 、DELETE、PUT和GET,对应的就是数据的4种基本操作:增删改查的操作。如下图所示:
2.RESTful
RESTFUL是一种网络应用程序的设计风格和开发方式。也就是遵守了REST风格的web服务;REST式的web服务是一种ROA面向资源的架构(The Resource-Oriented Architecture)。
其中,URI = /资源名称/资源标识 + HTTP的请求方式表示对应的CRUD操作。
例如:
<!--查询:-->
http://localhost/user/1 HTTP-GET <!--表示:查询id=1的user-->
http://localhost/users HTTP-GET <!--表示:查询所有user-->
<!--添加:-->
http://localhost/user HTTP-GET <!--表示:访问添加用户页面-->
http://localhost/user HTTP-POST <!--表示:新增一个user-->
<!--修改:-->
http://localhost/user HTTP-PUT <!--表示:修改user-->
<!--删除:-->
http://localhost/user/1 HTTP-DELETE <!--表示:删除id=1的user(采用$.ajax异步删除)-->
实现步骤:
- 定义一个UserController,映射以上所有的RESTful资源URI;
- IUserService接口中定义功能方法,以便UserController调用后可以实现功能;
- 定义User实体,以及UserDao中实现基本的数据库表的增删改查;
- UserService调用UserDao,实现IUserService接口所定义的功能方法。
- 把静态页面引入Thymeleaf模板引擎的templates中,并把相应的th:href修改为UserControllser中所定义的URI资源路径。
例如:所有员工的信息展示:
<h2>
<buttom class="btn btn-sm btn-success">添加用户</buttom>
</h2>
<table>
<thead>
<tr>
<th>用户编号</th>
<th>用户姓名</th>
<th>用户密码</th>
<th>操作</th>
</tr>
</thead>
<tbody>
<tr th:each="user:${users}">
<td th:text="${user.id}"></td>
<td th:text="${user.name}"></td>
<td th:text="${user.pwd}"></td>
<td>
<buttom class="btn btn-sm btn-primary">编辑</buttom>
<buttom class="btn btn-sm btn-danger">编辑</buttom>
</td>
</tr>
</tbody>
</table>