美文网首页
基于RESTful的CRUD

基于RESTful的CRUD

作者: 肖sir_嘉立老师 | 来源:发表于2019-11-15 00:11 被阅读0次

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架构的主要原则

  1. ** 网络上的所有事物都被抽象为资源**
  2. ** 每个资源都有一个唯一的资源标识符**
  3. ** 同一个资源具有多种表现形式(xml,json等)**
  4. ** 对资源的各种操作不会改变资源标识符**
  5. ** 所有的操作都是无状态的**
  6. ** 符合REST原则的架构方式即可称为RESTful**

1.3.基于HTTP通信规范

每个资源都使用 URI (Universal Resource Identifier) 得到一个唯一的地址。所有资源都共享统一的接口,以便在客户端和服务器之间传输状态。
使用的是标准的 HTTP 方法,比如 POSTDELETE、PUT和GET,对应的就是数据的4种基本操作:增删改查的操作。如下图所示:

rest通信方式.jpg

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异步删除)-->

实现步骤:

  1. 定义一个UserController,映射以上所有的RESTful资源URI;
  2. IUserService接口中定义功能方法,以便UserController调用后可以实现功能;
  3. 定义User实体,以及UserDao中实现基本的数据库表的增删改查;
  4. UserService调用UserDao,实现IUserService接口所定义的功能方法。
  5. 把静态页面引入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>

相关文章

网友评论

      本文标题:基于RESTful的CRUD

      本文链接:https://www.haomeiwen.com/subject/syndictx.html