restful風格html
簡單的理解,restful是一種url風格,或者說是規範,在之前的網址中,假定一個業務,取得數據網址爲http://test/get,添加信息的網址爲http://test/post,相似這樣。
可是在restful風格中,取得數據和添加數據的網址均應爲http://test,方法爲get或者post;因此,在restful風格中,一個網址就是一個資源,其形式相似於http://xxx.com/xx/{id}/{id} ,例如某購物網站,產品有不少種類,每種產品下有不少子類型,那麼http://shop.com/laptop/lenovo/1103 表明了聯想1103型號電腦,而http://shop.com/laptop/hp/1024 表明了2014型號電腦。前端
在spring mvc中,有@requestparam, @requestbody和@pathvariable 三種註解來得到瀏覽器端的參數,其中前二者都是由瀏覽器post提交的參數,而@pathvariable 則是從網址中取得參數;假設代碼以下:java
在上述代碼中,訪問http://shop.com/laptop/hp/1024網址時,則,category爲「laptop」,brand爲」hp」,id爲」1024」;因此說,在restful風格中,一個網址即表示了一個資源。@Requestmapping(value="/{category}/{brand}/{id},method=RequestMethod.POST) public void getbyid(@PathVariable("category") String category @PathVariable("brand") String brand @PathVariable("id") String id){ //具體代碼略 }
假定一個user對象,對象有不少屬性(name,sex,age,birth,address,tel)
在個人瞭解中,這兩者的區分爲:@restcontroller爲@controller和@responsebody的結合
在@controller註解中,返回的是字符串,或者是字符串匹配的模板名稱,即直接渲染視圖,與html頁面配合使用的;若是加上@ResponseBody,那麼會將controller的方法返回的對象經過適當的轉換器轉換爲指定的格式以後,寫入到response對象的body區,一般用來返回JSON數據spring
在這種狀況下,先後端的配合要求比較高,java後端的代碼要結合html的狀況進行渲染,使用model對象(或者modelandview)的數據將填充user視圖中的相關屬性,而後展現到瀏覽器,這個過程也能夠稱爲渲染;
java示例代碼以下:json
對應視圖user.jsp中的html代碼:@Controller @RequestMapping(method = RequestMethod.GET, value = "/") public String getuser(Model model) throws IOException { model.addAttribute("name",bob); model.addAttribute("sex",boy); return "user";//user是模板名 }
而在@restcontroller中,返回的應該是一個對象,即return一個user對象,這時,在沒有頁面的狀況下,也能看到返回的是一個user對象對應的json字符串,而前端的做用是利用返回的json進行解析渲染頁面,java後端的代碼比較自由。 <html xmlns:th="http://www.thymeleaf.org"> <body> <div> <p>"${name}"</p> <p>"${sex}"</p> </div> </body> </html>
java端代碼:後端
@RestController @RequestMapping(method = RequestMethod.GET, value = "/") public User getuser( ) throws IOException { User bob=new User(); bob.setName("bob"); bob.setSex("boy"); return bob; }
訪問網址獲得的是json字符串{「name」:」bob」,」sex」:」boy」},前端頁面只須要處理這個字符串便可。瀏覽器