Version: Next
RESTFul风格
概念
RESTFul就是一个资源定位及资源操作的风格。不是标准也不是协议,只是一种风格。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制
功能
- 资源:互联网所有的事物都可以被抽象为资源
- 资源操作:使用POST、DELETE、PUT、GET等不同方法对资源进行操作
- 分别对应添加、删除、修改、查询
对比
- 传统资源操作方式
URL | 请求方式 |
---|---|
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资源操作方式
URL | 请求方式 |
---|---|
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删除 |
@PathVariable
想要获取在浏览器路径中写的参数,可以用@pathVaribale
注解,让方法参数的值对应绑定到一个URI模板变量上
原先的
http://localhost:8080/add?a=1&b=2RESTFul
http://localhost:8080/add/a/b可以在
@RequestMapping
里设置请求采用的方法@Controllerpublic class RESTFulController {@RequestMapping(path = "/add/{a}/{b}" , method = RequestMethod.GET)public String test1(@PathVariable int a,@PathVariable int b, Model model) {int result = a + b;model.addAttribute("msg", "结果为" + result);return "test";}}
可以不设置RequestMapping的请求方式,直接使用下面的注解设定请求方式
@GetMapping
@PostMapping
@DeleteMapping
@PutMapping
@Controller
public class RESTFulController {
@GetMapping("/add/{a}/{b}")
public String test1(@PathVariable int a,@PathVariable int b, Model model) {
int result = a + b;
model.addAttribute("msg", "结果为" + result);
return "test";
}
}
使用RESTFul的好处
- 相同的请求路径,可以根据方法区分出不同的函数进行处理
- 不用暴露请求参数