1 什么是RESTful?
Restful就是一个资源定位及资源操作的风格。不是标准也不是协议,只是一种风格。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。
2 资源和资源操作
资源:互联网所有的事物都可以被抽象为资源
资源操作:使用POST、DELETE、PUT、GET,使用不同方法对资源进行操作。分别对应 添加、 删除、修改、查询。
2.1 传统操作资源和RESTful操作资源的区别
2.1.1 传统方式操作资源
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
2.1.2 使用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
3 利用SpringMVC完成RESTful风格的编程
使用SpringMVC使用RESTful方式实现商品信息查询,返回json数据
以url地址为http://127.0.0.1/item/1为例,步骤如下
3.1 使用注解@RequestMapping声明请求的url
按照上述示例,注解应该为:@RequestMapping("item/{id}")
{xxx}叫做占位符,请求的URL可以是“item /1”或“item/2”
3.2 使用(@PathVariable() Integer id)获取url上的数据
public Item queryItemById(@PathVariable() Integer id)
注意:如果@RequestMapping中表示为"item/{id}",id和形参名称一致,@PathVariable不用指定名称。如果不一致,例如"item/{ItemId}"则需要指定名称@PathVariable("itemId")。
如下所示:当①和②相同时,那么③中不需要加参数,如果①和②不对应,那么③需要增添一个与①一致的参数
3.3 Controller类方法
@RequestMapping("item/{itemId}")
@ResponseBody
public Items queryItemById(@PathVariable("itemId") Integer id) {
Items item = this.itemsService.queryItemById(id);
return item;
}
3.4 注意事项
- @PathVariable是获取url上数据的。@RequestParam获取请求参数的(包括post表单提交)
- 如果加上@ResponseBody注解,就不会走视图解析器,因此不会返回页面,上述返回的是json数据。如果不加,就走视图解析器,返回页面