1. 程式人生 > >springMVC與RESTful支援

springMVC與RESTful支援

    1. 什麼是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

 

    1. 需求

RESTful方式實現商品資訊查詢,返回json資料

    1. 從URL上獲取引數

使用RESTful風格開發的介面,根據id查詢商品,介面地址是:

http://127.0.0.1/item/1.action

 

我們需要從url上獲取商品id,步驟如下:

  1. 使用註解@RequestMapping("item/{id}")宣告請求的url

{xxx}叫做佔位符,請求的URL可以是“item /1”或“item/2

 

  1. 使用(@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

 

注意兩個區別

  1. @PathVariable是獲取url上資料的。@RequestParam獲取請求引數的(包括post表單提交)

 

  1. 如果加上@ResponseBody註解,就不會走檢視解析器,不會返回頁面,目前返回的json資料。如果不加,就走檢視解析器,返回頁面