什么是RESTful?
RESTFUL是一种网络应用程序的设计风格和开发方式,基于HTTP,可以使用XML格式定义或JSON格式定义。
RESTful简介
RESTful首次出现在 2000 年 Roy Fielding 的博士论文中,Roy Fielding是 HTTP 规范的主要编写者之一。
REST
REST 指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是 RESTful。
在目前主流的三种Web服务交互方案中,REST相比于SOAP(Simple Object Access protocol,简单对象访问协议)以及XML-RPC更加简单明了,值得注意的是REST并没有一个明确的标准,而更像是一种设计的风格。
RESTful的特点
-
每一个URI代表一种资源。
-
客户端使用GET、POST、PUT、DELETE这4中表示操作方式的动词对服务器端资源进行操作;
GET用来获取资源,POST用来新建资源,(也可以用于保存资源),PUT用来更新资源,DELETE用来删除资源。
-
通过操作资源的表现形式,来操作资源。
-
客户端与服务端之间的交互在请求之间是无状态的,从客户端到服务端的每个请求都必须包含理解请求所必需的信息。
传统方式与REST方式访问网络资源
-
传统方式
http://localhost/user/get?id=1
-
REST风格方式
http://localhost/user/1
-
优点
- 隐藏了资源的访问行为,通过请求地址无法得知做的是哪种操作。
- 简化书写。
RESTful入门使用
值得注意的是SpringMVC框架支持RESTful。
使用RESTful的步骤
-
在web.xml中配置SpringMVC对RESTful编程风格的支持过滤器
web.xml
<!--开启SpringMVC对RESTful编程风格的访问支持过滤器--> <filter> <filter-name>HiddenHttpMethodFilter</filter-name> <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class> </filter> <filter-mapping> <filter-name>HiddenHttpMethodFilter</filter-name> <!--引用配置的DispatcherServlet--> <servlet-name>DispatcherServlet</servlet-name> </filter-mapping>
-
使用RESTFul编程风格,编写控制层处理方法
@RestController @RequestMapping("/rest") public class RestfulController { /** * @param id 请求地址中的id参数,映射到方法的形参id中 * @return */ @GetMapping("{id}") public String demo2(@PathVariable String id) { System.out.println(id); return id; } }
-
响应结果
-
注意事项
- 处理方法上使用的
@GetMapping
注解,要求请求方法必须使用GET请求;如果是POST请求,就使用@PostMapping
注解,也就是说对用的请求,使用对应的注解,否则会报错。 - 请求地址中的参数名,必须和处理方法中的形参的参数名相同,否则会报错。
- 处理方法的形参中必须使用
@PathVariable
注解,从路径中获取参数,否则定义的形参则为null。 - 处理类上的
@RestController
=@@Controller
+@ResponseBody
的功能,表示当前类配置到Spring容器,并且类中所有的方法的返回值,都是存入响应体中返回,不再通过视图解析。
- 处理方法上使用的
在页面上如果使用指定的提交方式?
<form action="/user/1" method="post">
<input type="hidden" name="_method" value="PUT"/>
<input type="submit"/>
</form>
页面表单使用隐藏域提交请求类型,参数名称固定位method
,注意,必须配合提交类型method=post
使用