restful風格,restcontroller與controller
轉自:https://www.cnblogs.com/softidea/p/5884772.html#undefined
restful風格
簡單的理解,restful是一種url風格,或者說是規範,在以前的網址中,假定一個業務,取得資料網址為http://test/get,新增資訊的網址為http://test/post,類似這樣。
但是在restful風格中,取得資料和新增資料的網址均應為http://test,方法為get或者post;所以,在restful風格中,一個網址就是一個資源,其形式類似於http://xxx.com/xx/{id}/{id} ,例如某購物網站,產品有很多種類,每種產品下有很多子型別,那麼
在spring mvc中,有@requestparm, @requestbody和@pathvariable 三種註解來獲得瀏覽器端的引數,其中前兩者都是由瀏覽器post提交的引數,而@pathvariable 則是從網址中取得引數;假設程式碼如下:
@Requestmapping(value="/{category}/{brand}/{id},method=RequestMethod.POST)
public void getbyid(@PathVariable("category") String category
@PathVariable("brand") String brand @PathVariable("id") String id){ //具體程式碼略 }
在上述程式碼中,訪問http://shop.com/laptop/hp/1024網址時,則,category為“laptop”,brand為”hp”,id為”1024”;所以說,在restful風格中,一個網址即表示了一個資源。
restcontroller與controller
假定一個user物件,物件有很多屬性(name,sex,age,birth,address,tel)
在我的瞭解中,這二者的區分為:@restcontroller為@controller和@responsebody的結合
在@controller註解中,返回的是字串,或者是字串匹配的模板名稱,即直接渲染檢視,與html頁面配合使用的,
在這種情況下,前後端的配合要求比較高
java示例程式碼如下:
@Controller
@RequestMapping(method = RequestMethod.GET, value = "/")
public String getuser(Model model) throws IOException {
model.addAttribute(<span class="hljs-string">"name",bob);
model.addAttribute(<span class="hljs-string">"sex",boy);
<span class="hljs-keyword">return <span class="hljs-string">"<span style="color: #ff0000; font-size: 18pt;"><strong>user</strong></span>";//user是模板名
}<br><br></span></span></span></span></span></span></span></span></span></span></code><span style="font-family: verdana, Arial, Helvetica, sans-serif; font-size: 14px; line-height: 1.5;">對應檢視user.jsp中的html程式碼:</span></pre>
<html xmlns:th="http://www.thymeleaf.org">
<body> <div> <p>"${name}"</p> <p>"${sex}"</p> </div> </body> </html>
而在@restcontroller中,返回的應該是一個物件,即return一個user物件,這時,在沒有頁面的情況下,也能看到返回的是一個user物件對應的json字串,而前端的作用是利用返回的json進行解析渲染頁面,java後端的程式碼比較自由。
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”},前端頁面只需要處理這個字串即可。