1.概念
Restful就是一个资源定位及资源操作的分格。不是标准也不是协议,只是一种风格。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制
2.功能
- 资源:互联网所有的事物都可以被抽象为资源
- 资源操作:使用post、delete、put、get等不同方法对资源进行操作
- 分别对应添加、删除、修改、查询
3.传统方式操作资源
通过不同参数来实现不同效果!方法单一:post和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 更新post
4.使用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
通过请求方式来区别url链接的,链接地址可能相同但是请求方式不同
package cn.whu.RestfulController;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class UserController {
@GetMapping("/add/{a}/{b}")
public int test1(@PathVariable int a , @PathVariable int b){
int sum = a+b;
return sum;
}
@PostMapping("/add/{a}/{b}")
public int test2(@PathVariable int a , @PathVariable int b){
int sum = a+b;
return sum;
}
}
其实此时调用的是test1方法,因为请求方式是get,如果是表单提交那就是执行test2方法了!restful风格虽然url一样,但是会根据请求方式执行不同的方法
5.SpringMVC的注解
- RequestMapping(value="/add",method=RequestMethod.GET)和GetMapping("/add")是等价的
- @PathVariable是spring3.0的一个新功能:接收请求路径中占位符的值
@Controller
@RequestMapping("hello")
public class HelloController2 {
/**
*3、占位符映射
* 语法:@RequestMapping(value=”user/{userId}/{userName}”)
* 请求路径:http://localhost:8080/hello/show5/1/james
* @param ids
* @param names
* @return
*/
@RequestMapping("show5/{id}/{name}")
public ModelAndView test5(@PathVariable("id") Long ids ,@PathVariable("name") String names){
ModelAndView mv = new ModelAndView();
mv.addObject("msg","占位符映射:id:"+ids+";name:"+names);
mv.setViewName("hello2");
return mv;
}
6.RestFul风格的优势
- 安全
传统分格的url中存在很多项目代码a=1&b=2但是restful风格的url只有add/1/2,没有项目中的变量存在 - 高效
支持缓存