springMVC與RESTful支援
-
- 什麼是restful?
Restful就是一個資源定位及資源操作的風格。不是標準也不是協議,只是一種風格。基於這個風格設計的軟體可以更簡潔,更有層次,更易於實現快取等機制。
資源:網際網路所有的事物都可以被抽象為資源
資源操作:使用POST、DELETE、PUT、GET,使用不同方法對資源進行操作。
分別對應 新增、 刪除、修改、查詢。
傳統方式操作資源
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操作資源
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
-
- 需求
RESTful方式實現商品資訊查詢,返回json資料
-
- 從URL上獲取引數
使用RESTful風格開發的介面,根據id查詢商品,介面地址是:
http://127.0.0.1/item/1.action
我們需要從url上獲取商品id,步驟如下:
- 使用註解@RequestMapping("item/{id}")宣告請求的url
{xxx}叫做佔位符,請求的URL可以是“item /1”或“item/2”
- 使用(@PathVariable() Integer id)獲取url上的資料
/**
* 使用RESTful風格開發介面,實現根據id查詢商品
*
* @param id
* @return
*/
@RequestMapping("item/{id}")
@ResponseBody
public Item queryItemById(@PathVariable() Integer id) {
Item item = this.itemService.queryItemById(id);
return item;
}
如果@RequestMapping中表示為"item/{id}",id和形參名稱一致,@PathVariable不用指定名稱。如果不一致,例如"item/{ItemId}"則需要指定名稱@PathVariable("itemId")。
http://127.0.0.1/item.action?id=1
http://127.0.0.1/item/1.action
注意兩個區別
- @PathVariable是獲取url上資料的。@RequestParam獲取請求引數的(包括post表單提交)
- 如果加上@ResponseBody註解,就不會走檢視解析器,不會返回頁面,目前返回的json資料。如果不加,就走檢視解析器,返回頁面