SpringMVC——RESTFul风格
1、什么是RESTFul
-
REST(Representational State Transfer):指的是一组架构约束条件和原则;
-
满足这些约束条件和原则的应用程序或设计就是RESTFul;
-
RESTFul是一种软件架构风格、设计风格,而不是标准,只是提供了一组设计原则和约束条件,它主要用于客户端和服务端交互类的软件。基于这个风格设计的软件可以更简介,更有层次,更易于实现缓存等机制。
2、RESTful的特性
资源(Resources):网络上的一个实体,或者说是网络上的一个具体信息。它可以是一段文本、一张图片、一首歌曲、一种服务,总之就是一个具体的存在。可以用一个URI(统一资源定位符)指向它,每种资源对应一个特性的URI。要获取这个资源,访问它的URI就可以,因此URI即为每一个资源的独一无二的识别符。
表现层(Representation):把资源具体呈现出来的形式,叫做它的表现层(Representation)。比如,文本可以用txt格式表现,也可以用HTML格式、XML格式、JSON格式表现,甚至可以采用二进制格式。
状态转换(State Transfer):每发出一个请求,就代表了客户端和服务器的一次交互过程。HTTP协议,是一个无状态协议,即所有的状态都保存在服务器端。因此,如果客户端想要操作服务器,必须通过某种手段,让服务器端发生“状态转换”(State Transfer)。而这种转换是建立在表现层之上的,所以就是“表现层状态转换”。具体说,就是HTTP协议里面,四个表示操作方式的动词:GET、POST、PUT、DELETE。他们分别对应四种基本操作:GET用来获取资源,POST用来新建资源,PUT用来更新资源,DELETE用来删除资源。
3、RESTFul风格的简单测试
1.新建一个类 RestFulController
package com.cheng.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
@Controller
public class RESTFulController {
//原来的访问路径:http://localhost:8080/add?a=1&b=99
//RESTFul风格的访问路径:http://localhost:8080/s2/add/1/99 表示a=1,b=99
// @RequestMapping(value = "/add/{a}/{b}",method = RequestMethod.GET) 使用method属性指定请求类型 ,当不指定请求类型时,写法为@RequestMapping("/add/{a}/{b}")
@GetMapping("/add/{a}/{b}")//也可以用注解,等价于上面的代码
public String test(@PathVariable int a, @PathVariable int b, Model model){// @PathVariable:让方法参数的值对应绑定到一个URI模板变量上。
int res = a+b;
model.addAttribute("msg","结果为"+res);
return "hello";
}
}
路径变量@PathVariable:让方法参数的值对应绑定到一个URI模板变量上。
2.测试结果
使用路径变量@PathVariable的好处:
-
- 使路径变得更加简洁,安全,高效;
- 获得参数更加方便,框架会自动进行类型转换。
- 通过路径变量的类型可以约束访问参数,如果类型不一样,则访问不到对应的请求方法,如这里访问是的路径是/add/1/a,则路径与方法不匹配,而不会是参数转换失败。
方法级别的注解变体有如下几个:
@GetMapping(默认)
@PostMapping
@PutMapping
@DeleteMapping
@PatchMapping