【串线篇】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的子集,表征一个资源实体。比如,http://a.com/users/1。
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>