一种软件架构风格、设计风格,而不是标准,只是提供了一组设计原则和约束条件。它主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制
在 REST 样式的 Web 服务中,每个资源都有一个地址。资源本身都是方法调用的目标,方法列表对所有资源都是一样的。这些方法都是标准方法,包括 HTTP GET、POST、PUT、DELETE,还可能包括 HEAD 和 OPTIONS。
在平时的 Web 开发中,method 常用的值是 GET 和 POST,但是实际上,HTTP 方法还有 PATCH、DELETE、PUT 等其他值,这些方法又通常会匹配为如下的 CRUD 动作:
Springboot添加了注解@PutMapping、@GetMapping、@DeleteMapping、@PostMapping等与之对应
CRUD 动作 | HTTP 方法 |
---|---|
Create | POST |
Read | GET |
Update | PUT 或 PATCH |
Delete | DELETE |
尽管通常来讲,HTTP 方法会映射为 CRUD 动作,但这并不是严格的限制,有时候 PUT 也可以用来创建新的资源,POST 也可以用来更新资源。实际上,POST 请求非幂等的特性(???)使其成一个非常灵活地方法,对于无法适应其他 HTTP 方法语义的操作,它都能够胜任。
实例:没有使用RESTful之前,查询一个商品是这样的:
@GetMapping("/selectSingle")
public Commodity selectSingle(Integer id) {
return iCommodityService.selectSingle(id);
}
请求方式:http://localhost:8088/commodity/commodityController/selectSingle?id=2
使用RESTful之后
@GetMapping(value = {"/selectSingle/{id}"})
public Commodity selectSingle(@PathVariable(required = false) Integer id) {
return iCommodityService.selectSingle(id);
}
请求方式:http://localhost:8088/commodity/commodityController/selectSingle/2
@PathVariable注解 接收请求路径中占位符的值