什么是RESTful风格?
RESTful,也叫REST(英文: Representational State Transfer, 简称 REST)即表述性转移,是目前最流行的一种软件架构风格。它结构清晰、易于理解、有较好的扩展性。
REST描述了一个架构样式的网络系统,比如 web 应用程序。它首次出现在 2000 年 Roy Fielding 的博士论文中,他是 HTTP 规范的主要编写者之一。在目前主流的三种 Web 服务交互方案中,REST 相比于SOAP(Simple Object Access protocol, 简单对象访问协议) 以及 XML-RPC 更加简单明了, 无论是对 URL 的处理还是对 Payload 的编码, REST 都倾向于用更加简单轻量的方法设计和实现。 值得注意的是 REST 并没有一个明确的标准, 而更像是一种设计的风格。REST 其核心价值在于如何设计出符合 REST 风格的网络接口。 基于这个风格设计的软件可以更简洁, 更有层次, 更易于实现缓存等机制。
简单地说:使用RESTful风格可以让我们客户端与服务端访问的URL更加简洁方便!
Spring REST 风格可以简单理解为:使用 URL 表示资源时,每个资源都用一个独一无二的 URL 来表示,并使用 HTTP 方法表示操作,即准确描述服务器对资源的处理动作(GET、POST、PUT、DELETE),实现资源的增删改查。
- GET:表示获取资源
- POST:表示新建资源
- PUT:表示更新资源
- DELETE:表示删除资源
下面举例说明 REST 风格的 URL 与传统 URL 的区别。
/userview.html?id=12 VS /user/view/12
/userdelete.html?id=12 VS /user/delete/12
/usermodify.html?id=12 VS /user/modify/12
我们发现 REST 风格的 URL 中最明显的就是参数不再使用“?”传递。这种风格的 URL 可读性更好,使得项目架构清晰,最关键的是 Spring MVC 也提供对这种风格的支持。
但是也有弊端,对于国内项目,URL 参数有时会传递中文,而中文乱码是一个令人头疼的问题,所以我们应该根据实际情况进行灵活处理。很多网站都是传统 URL 风格与 REST 风格混搭使用。
Spring MVC开发RESTful应用
REST 概念较为复杂,我们不过多解释,大家简单了解 Spring MVC 的 REST 风格的简单使用即可。
- 新建controler
在Spring MVC中可以使用 @PathVariable 注解,让方法参数的值对应绑定到一个URI模板变量上。
@Controller
public class RestFulController {
//映射访问路径
@RequestMapping("/commit/{p1}/{p2}")
public String index(@PathVariable int p1, @PathVariable int p2, Model model){
int result = p1+p2;
//Spring MVC会自动实例化一个Model对象用于向视图中传值
model.addAttribute("msg", "结果:"+result);
//返回视图位置
return "hello";
}
2.我们来测试请求查看下
通过路径变量的类型可以约束访问参数,如果类型不一样,则访问不到对应的请求方法,如这里访问是的路径是/commit/1/a,则路径与方法不匹配,而不会是参数转换失败。
3.我们来修改下对应的参数类型,再次测试
//映射访问路径
@RequestMapping("/commit/{a}/{b}")
public String index1(@PathVariable int a, @PathVariable String b, Model model){
String result = a+b;
//Spring MVC会自动实例化一个Model对象用于向视图中传值
model.addAttribute("msg", "结果:"+result);
//返回视图位置
return "hello";
}