欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

SpringMVC互联网软件架构REST使用详解

程序员文章站 2024-03-04 14:05:35
什么是rest rest:即 representational state transfer。(资源)表现层状态转化。是目前最流行的一种互联网软件架构。它结构清晰、符合标...

什么是rest

rest:即 representational state transfer。(资源)表现层状态转化。是目前最流行的一种互联网软件架构。它结构清晰、符合标准、易于理解、扩展方便,所以正得到越来越多网站的采用

☐ 资源(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

我们想实现的效果如下图,通过客户端访问特殊url(例如该url末尾的数字表示用户id)来快速实现curd操作。

SpringMVC互联网软件架构REST使用详解

但是,浏览器 form 表单只支持 get与 post 请求,而delete、put 等 method 并不支持,spring3.0 添加了一个过滤器,可以将这些请求转换为标准的 http 方法,使得支持 get、post、put 与delete 请求.这个过滤器就是hiddenhttpmethodfilter

过滤器的实现原理大致如下:检测请求参数中是否包含 _method这个参数,如果包含则获取其值,然后判断是哪种操作后继续传递:    

protected void dofilterinternal(httpservletrequest request, httpservletresponse response, filterchain filterchain) throws servletexception, ioexception {
    //methodparam="_method";
     string paramvalue = request.getparameter(this.methodparam);
    if("post".equals(request.getmethod()) && stringutils.haslength(paramvalue)) {
      string method = paramvalue.touppercase(locale.english);
      hiddenhttpmethodfilter.httpmethodrequestwrapper wrapper = new hiddenhttpmethodfilter.httpmethodrequestwrapper(request, method);
      filterchain.dofilter(wrapper, response);
    } else {
      filterchain.dofilter(request, response);
    }

  }

演示(rest风格的访问)

1.配置过滤器hiddenhttpmethodfilter,可以把post请求转换为delete或put请求:

SpringMVC互联网软件架构REST使用详解

2.在表单中携带隐藏域

SpringMVC互联网软件架构REST使用详解

说明:name="_method';

3.在控制器中处理请求

SpringMVC互联网软件架构REST使用详解

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。