【串线篇】REST风格的请求格式

1.什么是restful风格

答出这两点就够了:

1.1 统一接口

rest其实是基于HTTP的,四种方式。

RESTful架构风格规定,数据的元操作,即CRUD(create, read, update和delete,即数据的增删查改)操作,分别对应于HTTP方法:GET用来获取资源,POST用来新建资源(也可以用于更新资源),PUT用来更新资源,DELETE用来删除资源。

这样就统一了数据操作的接口,仅通过HTTP方法,就可以完成对数据的所有增删查改工作。即:

  • GET(SELECT):从服务器取出资源(一项或多项)。
  • POST(CREATE):在服务器新建一个资源。
  • PUT(UPDATE):在服务器更新资源(客户端提供完整资源数据)。
  • PATCH(UPDATE):在服务器更新资源(客户端提供需要修改的资源数据)。
  • DELETE(DELETE):从服务器删除资源。

1.2 URI(统一资源定位符)

每个URI(UniformResourceIdentifier)对应特定的资源,即资源标识。

可以用一个URI指向资源,即每个URI都对应一个特定的资源。要获取这个资源,访问它的URI就可以,因此URI就成了每一个资源的地址或识别符。

一般的,每个资源至少有一个URI与之对应,最典型的URI即URL。

2. 区分URL与URI

需要对HTTP协议更多的理解

1.URL格式:协议://域名/路径?查询#HASH,实际的一个HTTP请求,还会包括Header(含Cookie、Method等)

2.资源的URI格式:协议://域名/路径,它只是URL的子集,表征一个资源实体。比如,

3.测试样例

这里给出请求一个“资源”的写法demo,自己可以根据业务去具体实现

前端jsp:

<%
  pageContext.setAttribute("ctp", request.getContextPath());
%>

项目路径ctp /order请求随便起名字比如叫做emp/${id}

后端Controller:

@RequestMapping(value = "/emp/{id}", method = RequestMethod.GET)
public String getEmp(@PathVariable("id") Integer id, Model model) {
        …
}

或者绕过前端之间在地址栏输入同样的请求访问服务器:

localhost:8080/emp/1即可查询出1号员工

4. restful四种方式

 

但是默认只有get/post两种方式,怎么配置其他两种方式呢?

Spring提供了对Rest风格的支持--即从页面发起PUT、DELETE形式的请求,具体实现如下:

支持Rest风格转换的filter

去web.xml配置这个filter

<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配置之后开始写具体的页面

按照以下要求;

1、创建一个post类型的表单

2、表单项中携带一个_method的参数

3、这个_method的值就是DELETE、PUT

代码示例:

<form action="book/1" method="post">

     <input name="_method" value="put"/>

     <input type="submit" value="更新1号图书"/>

</form>

<form action="book/1" method="post">

     <input name="_method" value="delete"/>

     <input type="submit" value="删除1号图书"/>

</form>

 

posted @ 2019-10-26 19:30  月半大熊猫  阅读(1350)  评论(0编辑  收藏  举报