1 什么是RESTful
REST,即Representational State Transfer的缩写。就是用URL定位资源,用HTTP描述操作,准确的说应该是通过HTTP的四个动词(GET,POST,DELETE,PUT)来描述操作。我的理解是前后端的一种约定,而不是定义标准,REST也是要基于http、uri、xml和html这些广泛使用的协议和标准。
2 应用示例
直接上代码,更直观
@RestController
@RequestMapping("/productApi")
public class ProductController {
/**
* 保存商品信息
*
* 对应url http://localhost:8080/productApi/product
*/
@PostMapping(value = "/product", produces = {"application/json;charset=UTF-8"})
public String saveProduct(){
return "保存成功!";
}
/**
* 根据id删除商品
*
* 对应url http://localhost:8080/productApi/product/123
*/
@DeleteMapping(value = "/product/{id}",produces = {"application/json;charset=UTF-8"})
public String deleteProduct(String id){
return "删除成功!";
}
/**
* 根据id修改商品信息
*
* 对应url http://localhost:8080/productApi/product/123
*/
@PutMapping(value = "/product/{id}", produces = {"application/json;charset=UTF-8"})
public String updateProduct(String id){
return "修改成功!";
}
/**
* 根据名称和产地查询商品信息
*
* 对应url http://localhost:8080/productApi/product/123/beijing
*/
@GetMapping(value = "/product/{name}/{address}", produces = {"application/json;charset=UTF-8"})
public String selectProduct(String name, String address){
return "查询成功!";
}
}
需要说明的是前端写代码时ajax里面的type也要修改为GET,POST,DELETE,PUT中的一个,前后台保持一致
3 RESTful风格的优势
- 行为和资源分离,更容易理解
- 可以利用缓存Cache来提高响应速度
- 提高服务器的扩展性
- 减少了客户端和服务端的耦合
- 在软件技术演进中的长期的兼容性更好
4 RESTful风格的缺点
- 对与开发人员要求比较高,需要从复杂业务中抽离出来简单的crud操作
- 同样对于复杂业务,需要写的接口增加了,增加了请求的次数
- 不利于异步情况下事务的实现