SpringMVC——RESTful风格
一、RESTful风格
1.概念
RESTful是一种软件架构风格、设计风格,而不是标准,只是提供了一组设计原则和约束条件。它主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。
2.传统方式操作资源,RESTful风格操作资源
资源:在互联网上,所有的事物都可以被抽象为资源
资源操作:使用POST、DELETE、PUT、GET,使用不同方法对资源进行操作。
传统方式操作资源:
http://127.0.0.1/item/queryItem.action?id=1 查询,GET
http://127.0.0.1/item/saveItem.action 新增,POST
http://127.0.0.1/item/updateItem.action 更新,POST
http://127.0.0.1/item/deleteItem.action?id=1 删除,GET或POST
使用RESTful风格操作资源:
http://127.0.0.1/item/1 查询,GET
http://127.0.0.1/item 新增,POST
http://127.0.0.1/item 更新,PUT
http://127.0.0.1/item/1 删除,DELETE
我们可以发现使用RESTful风格我们请求传参变得简单了,直接/参数
就可以代替传统的?参数=值
2.案例展示
RESTful风格携带参数路径传值:
@Controller
public class HelloController{
//请求映射访问路径,{}里面的是传的参数
@RequestMapping("/test1/{p1}/{p2}")
//@PathVariable路径变量 这个注解可以将值和@RequestMapping中的带{}的参数对应起来
public String hello(@PathVariable int p1, @PathVariable int p2, Model model){
model.addAttribute("msg",p1+p2);
return "hello";
}
}
启动Tomcat测试:
我们访问的路径为http://localhost:8080/springmvc/test1/1/2
后面传入1和2两个参数
使用了路径变量可以让路径变得简单;获得参数更加方便,框架还会自动进行类型转换。
通过路径变量的类型可以约束访问参数,如果类型不一样,则访问不到对应的请求方法,如这里访问是的路径是/test1/1/a,则路径与方法不匹配,而不会是参数转换失败。
RESTful风格method属性指定请求类型:
将请求设置为POST请求方式
@Controller
public class HelloController{
//value表示请求的url,method表示请求方式为POST请求
@RequestMapping(value = "/test1",method = {RequestMethod.POST})
public String hello(Model model){
model.addAttribute("msg","method的请求方式为POST");
return "hello";
}
}
测试:
我们发现将请求方式为POST时会报错,因为我们使用地址栏访问时默认请求时GET请求,所以会报405错误
那我们将请求改为GET请求进行测试
@Controller
public class HelloController{
//value表示请求的url,method表示请求方式为GET请求
@RequestMapping(value = "/test1",method = {RequestMethod.GET})
public String hello(Model model){
model.addAttribute("msg","method的请求方式为GET");
return "hello";
}
}
Spring MVC 的 @RequestMapping 注解能够处理 HTTP 请求的方法, 比如 GET, PUT, POST, DELETE 以及 PATCH。但是所有的请求默认都会是 HTTP GET 类型的。
但是我们可以使用以下注解去换掉@RequestMapping,已达到改变请求方式的目的
@GetMapping
@PostMapping
@PutMapping
@DeleteMapping
@PatchMappin