前言:
本系列部落格記錄 springboot 求學之路:
springboot 有很多請求方式,這裡記錄一下如題的一個疑問,
1.問題的由來
學習就要看書,書上有個例子,如下:
@Controller
public class TestController {
@GetMapping("/get")
public @ResponseBody Object getName() {
return "hello";
}
}
而網上的教程是這樣的:
@RestController
public class TestController {
@GetMapping("/get")
public Object getName() {
return "hello";
}
}
這兩個例子都沒問題,但是寫法風格不一樣,是以有必要探究一下
2.差別
@RestController加在類上面的注解,使得類裡面的每個方法都将 json/xml 傳回資料加傳回到前台頁面中
@Controller加在類上面的注解,使得類裡面的每個方法都傳回一個視圖頁面;
仔細看“視圖頁面”,1 中給的例子傳回的可是字元串,很明顯不符合,為了可以傳回字元串,是以在類方法裡面多了一個@ResponseBody注解,它讓方法可以以 json/xml 形式傳回。
3.總結
@RestController 傳回json/xml
@Controller 傳回視圖
如果需求是傳回 json/xml 則 @RestController = @Controller + @ResponseBody
其中 @ResponseBody注解可以放到類上(類中方法都生效),也可以放在方法上,如下
@Controller
public class TestController {
@GetMapping("/get")
@ResponseBody
public Object getName() {
return "hello";
}
}