有兩種使用 Spring MVC 產生輸出的方法
- 您可以使用 RESTful
@ResponseBody
方法和 HTTP 訊息轉換器,通常返回 JSON 或 XML 等資料格式。程式化用戶端、行動應用程式和支援 AJAX 的瀏覽器是常見的用戶端。 - 或者,您可以使用View 解析。 雖然 View 完全能夠在您希望的情況下生成 JSON 和 XML(在我的下一篇文章中會詳細介紹),但 View 通常用於為傳統 Web 應用程式生成 HTML 等表示格式。
- 實際上還有第三種可能性 - 有些應用程式需要兩者,Spring MVC 可以輕鬆支援這種組合。 我們將在最後回到這一點。
無論哪種情況,您都需要處理控制器傳回的相同資料的多種表示形式(或 View)。 計算出要傳回哪種資料格式稱為內容協商。
在以下三種情況下,我們需要知道要在 HTTP 回應中傳送哪種類型的資料格式
- HttpMessageConverters: 確定要使用的正確轉換器。
- Request Mappings: 將傳入的 HTTP 請求對應到傳回不同格式的不同方法。
- View Resolution: 選擇要使用的正確 View。
確定使用者請求的格式取決於 ContentNegotationStrategy
。 有預設實現可直接使用,但您也可以根據需要實現自己的實現。
在這篇文章中,我想討論如何使用 Spring 配置和使用內容協商,主要是在使用 HTTP 訊息轉換器的 RESTful 控制器的方面。 在後續的 文章 中,我將展示如何專門為與使用 Spring 的 View 一起使用而設定內容協商 ContentNegotiatingViewResolver
...