REST风格的请求格式
Posted yanl55555
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了REST风格的请求格式相关的知识,希望对你有一定的参考价值。
1.什么是rest
答出这两点就够了:
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对应特定的资源,即资源标识。
可以用一个URI(统一资源定位符)指向资源,即每个URI都对应一个特定的资源。要获取这个资源,访问它的URI就可以,因此URI就成了每一个资源的地址或识别符。
一般的,每个资源至少有一个URI与之对应,最典型的URI即URL。
1.3 区分URL与URI
需要对HTTP协议更多的理解
URL格式:协议://域名/路径?查询#HASH,实际的一个HTTP请求,还会包括Header(含Cookie、Method等)
资源的URI格式:协议://域名/路径,它只是URL的子集,表征一个资源实体。比如,http://a.com/users/1。
2.样例
请求一个“资源”的写法
前端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号员工
3. 四种方式
但是默认只有get/post两种方式,怎么配置其他两种方式呢?
从页面发起PUT、DELETE形式的请求?Spring提供了对Rest风格的支持
1)、<!-- 支持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>
2)、如何发其他形式请求?
按照以下要求;
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="put"/> <input type="submit" value="更新1号图书"/> </form>
以上是关于REST风格的请求格式的主要内容,如果未能解决你的问题,请参考以下文章
SpringMVC入门系列篇3:@RequestMapping & @RequestHeader & @CookieValue详解与REST风格请求