首页 > 编程知识 正文

REST RESTful 风格rest风格的CRUD源码分析,rest风格的软件架构

时间:2023-05-03 15:02:07 阅读:234126 作者:2365

什么是REST?

REST(英文:Representational State Transfer,简称REST,意思:表述性状态转换,描述了一个架构样式的网络系统,比如web应用)。

它是一种软件架构风格、设计风格,而不是标准,只是提供了一组设计原则和约束条件,它主要用于客户端和服务端交互类的软件。基于这个风格设计的软件可以更简介,更有层次,更易于实现缓存等机制。

它本身并没有什么使用性,其核心价值在于如何设计出符合REST风格的网络接口。

什么是RESTful?

REST:指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是RESTful

RESTful的特性

资源(Resources):网络上的一个实体,或者说是网络上的一个具体信息。它可以是一段文本、一张图片、一首歌曲、一种服务,总之就是一个具体的存在。可以用一个URI(统一资源定位符)指向它,每种资源对应一个特性的URI。要获取这个资源,访问它的URI就可以,因此URI即为每一个资源的独一无二的识别符。

表现层(Representation):把资源具体呈现出来的形式,叫做它的表现层(Representation)。比如,文本可以用txt格式表现,也可以用HTML格式、XML格式、JSON格式表现,甚至可以采用二进制格式。

状态转换(State Transfer):每发出一个请求,就代表了客户端和服务器的一次交互过程。HTTP协议,是一个无状态协议,即所有的状态都保存在服务器端。因此,如果客户端想要操作服务器,必须通过某种手段,让服务器端发生“状态转换”(State Transfer)。而这种转换是建立在表现层之上的,所以就是“表现层状态转换”。具体说,就是HTTP协议里面,四个表示操作方式的动词:GET、POST、PUT、DELETE。他们分别对应四种基本操作:GET用来获取资源,POST用来新建资源,PUT用来更新资源,DELETE用来删除资源。

下面实现rest风格的增删改查(无数据库)

控制器

* Rest风格实现增删改查 * Rest:系统希望以非常简洁的URL地址来发请求; * Rest推荐; * url地址这么起名; /资源名/资源标识符 * /book/1 :GET-----查询1号图书 * /book/1 :PUT------更新1号图书 * /book/1 :DELETE-----删除1号图书 * /book :POST-----添加图书 * 系统的URL地址就这么来设计即可; * 简洁的URL提交请求,以请求方式区分对资源操作; * 问题:从页面上只能发起两种请求,GET、POST; * 其他的请求方式没法使用; */@Controller@RequestMapping("rest")public class RestController { @RequestMapping(value = "get/{id}", method = RequestMethod.GET) public String getBook(@PathVariable("id") String id){ System.out.println("查询到了"+id); return "hh"; } @RequestMapping(value = "get", method = RequestMethod.POST) public String insert(){ System.out.println("添加到了"); return "hh"; } @RequestMapping(value = "get/{id}",method = RequestMethod.DELETE) public String delete(@PathVariable("id") String id){ System.out.println("删除了"+id); return "hh"; } @RequestMapping(value = "get/{id}" ,method = RequestMethod.PUT) public String update(@PathVariable("id") String id){ System.out.println("修改了"+id); return "hh"; }}

 jsp页面

put和delete方法我们要先设置成为form表单然后里面传入一个参数

<a rel="external nofollow" href="rest/get/id">查询图书</a> <br> <form method="post" action="rest/get"> <input type="submit" value="添加图书"> </form> <br><%-- 修改和删除都需要用put、delete的_method的input就可以了--%> <form method="post" action="rest/get/id"> <input value="put" name="_method"> <input type="submit" value="修改图书"> </form> <br> <form method="post" action="rest/get/id"> <input value="delete" name="_method"> <input type="submit" value="删除图书"> </form>

再添加一个filter过滤器它可以传入的把里面的_method修改

<!--过滤器源码里面把方法请求修改了 基于rest风格的过滤器--> <filter> <filter-name>hiddenHttpMethodFilter</filter-name> <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class> </filter> <filter-mapping> <filter-name>hiddenHttpMethodFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>

然后就可以使用了

下面看源码分析filter

资源就结束了是不是好简单呢

margin

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。