- 使用客户/服务器模型:客户和服务器间通过一个统一的接口来互相通讯;
- 层次化的系统:在一个rest系统中客户端并不会固定的与一个服务端打交道;
- 无状态:在rest系统中,服务端不会保存客户的任何状态,客户端负责用户状态的维持,并在每次发送请求时,提供足够的信息;
- 可缓存:可以恰当的缓存请求;
- 统一的接口:
以前非REST时,我们的URI
查询用户:http://localhost/user/query?id=1 - GET
添加用户: http://localhost/user/insert - POST
修改用户: http://localhost/user/update - POST
删除用户: http://localhost/user/delete?id=1 - GET
REST查询用户:http://localhost/user/{id} - GET
添加用户: http://localhost/user - POST
修改用户: http://localhost/user - PUT
删除用户: http://localhost/user - DELETE
响应状态码:
<!-- 解决PUT请求的参数为null问题 -->
<filter>
<filter-name>HttpMethodFilter</filter-name>
<filter-class>org.springframework.web.filter.HttpPutFormContentFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>HttpMethodFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
解决delete请求参数为null:<!-- 通过POST请求传递参数,再 用_method指定要转化的请求方式(DELETE或PUT),最后转为DELETE或PUT请求 -->
<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>