[英]REST and spring-mvc
由於基於 REST 的控制器方法僅根據請求將對象(而不是視圖)返回給客戶端,我如何向我的用戶顯示視圖? 或者也許更好的問題是什么是將 spring-mvc web 應用程序與 REST 結合的好方法,所以我的用戶總是得到答案,不僅僅是(例如)JSON 格式,而且還有視圖?
據我所知,基於 REST 的控制器非常適合移動應用程序(例如 twitter ),其中視圖在應用程序內部處理,服務器唯一需要擔心的是將正確的對象傳遞給正確的請求。 但是網絡應用程序呢?
我可能在幾件事上是錯的(如果我錯了,請糾正我),因為我正在嘗試了解 REST 並且我仍在學習。
為了簡化事情 - 您基本上有兩個選擇:1)構建 Spring MVC 應用程序。 2) 構建 REST 后端應用程序。
在第一個選項的情況下 - 在您的應用程序中,您將同時擁有后端和前端(MVC 部分)。
在第二個選項的情況下,您只構建后端應用程序並通過 REST API 公開它。 在大多數情況下,您需要為您的應用程序構建另一個應用程序 - REST 客戶端。 這是一個更靈活的應用程序,因為它讓您有機會從各種客戶端訪問您的后端應用程序 - 例如,您可以擁有 Android、IOS 應用程序,您可以使用 Angular 等實現 Web 應用程序......
請注意,thins 並不是那么簡單,您可以在一個應用程序中同時擁有 REST 后端和 REST 客戶端等......這只是非常非常簡化,以便您獲得一些總體情況。 希望這澄清了一些事情。
還有一些與 REST 和視圖相關的額外說明值得學習。 從您的問題中,我可以看出您指的是 UI(用戶界面)和典型 MVC 用法意義上的“視圖”。 但是“視圖”在不同的上下文中可能意味着不同的東西。
所以:
此方法返回一個視圖
@RequestMapping("/home")
String home(Model model) {
return "home"; // resources\templates\home.html
}
此方法返回字符串
@RequestMapping(value = "/home")
@ResponseBody
public String home() {
return "Success";
}
如果您使用@ResponseBody
注釋方法,Spring 將使用 json 映射器來生成響應。 取而代之的注釋與每個方法的@ResponseBody
你可以注釋你的類@RestController
。
如果要返回視圖,則需要使用@Controller
而不是@RestController
來注釋該類並配置一個viewresolver。 如果您將 spring-web 作為類路徑的依賴項,Bij 默認 spring 將使用 thymeleaf 作為視圖解析器。 該方法的返回類型是一個引用要呈現的模板的字符串。 模板存儲在src/main/resources/templates
。
您可以在 spring 網站上找到指南: https : //spring.io/guides/gs/serving-web-content/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.