RESTful支持
一、什么是RESTful支持
RESTful就是一个资源定位及资源操作的风格,不是标准也不是协议,只是一种风格,基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。
资源:互联网所有事物都可以被抽象为资源
资源操作:使用PSET、DELETE、PUT、GET,使用不同方法对资源进行操作。分别对应添加、删除、修改、查询。
传统方式操作资源:
- http://localhost:8080/item/queryItem.action?id=1 查询,GET
- http://localhost:8080/item/saveItem.action 新增,POST
- http://localhost:8080/item/updateItem.action 更改,POST
- http://localhost:8080/item/deleteItem.action?id=1 删除,GET或POST
使用RESTful操作资源
- http://localhost:8080/item/1 查询,GET
- http://localhost:8080/item 新增,POST
- http://localhost:8080/item/ 更新,PUT
- http://localhost:8080/item/1 删除DELETE
二、RESTful风格的简单使用
需求:RESTful方式实现商品信息查询,返回json数据
1.从URL上获取参数
使用RESTful风格开发的接口,根据id查询商品、接口地址是:http://localhost:8080/item/1
我们需要从url上获取商品id,步骤如下:
(1).使用注解@RequestMapping("item/{id}") 声明请求的url,{xx}叫做占位符,请求的URL可以使‘"item/1"或"item/2"
(2).使用(@PathVariable()Integer id)获取url上的数据
/**
* RESTful风格演示
*
* @param ids
* @param model
* @return
*/
//RESTful风格url上的参数通过{}点位符绑定
//点位符参数名与方法参数名不一致时,通过@PathVariable绑定
@RequestMapping("/item/{id}")
public String testRest(@PathVariable("id") Integer ids, Model model) {
Item item = itemService.getItemById(ids);
model.addAttribute("item", item);
return "itemEdit";
}
前端控制器:
<servlet-mapping>
<servlet-name>springmvc-web</servlet-name>
<!-- <url-pattern>*.action</url-pattern> -->
<url-pattern>/</url-pattern>
</servlet-mapping>
这样我们的访问地址就成了:http://localhost:8080/项目名/item/1
如下:
如果@RequestMapping 中表示为"item/{id}",id和形参名称一致,@PathVariable 不用指定名称,如果不一致,例如"item/{ItemId}"则需要指定名称@PathVariable("itemId")。
注:1.@PathVariable 是获取url上数据的,@RequestParam是获取请求参数的(包括post表单提交)
2.如果加上@RequestBody 注解,就不会走视图解析器,不会返回页面,目前返回的json数据。如果不加,就走视图解析器,返回页面。