Spring MVC常用註解--“姐妹花”@RequestBody和@ResponseBody
1. 引言
在這篇短文中,我們簡要地介紹了Spring MVC中常用的註解 @RequestBody和@ResponseBody。
2. @RequestBody
簡單地說,在@RequestBody註解的幫助下,Spring MVC會自動將HttpRequest body反序列化為一個Java物件,通常會將HttpRequest body對映到一個DTO或DO。
首先,讓我們看一看Spring控制器方法:
如果HttpRequest body攜帶了正確的JSON,Spring MVC會自動將這個JSON反序列化為一個Java物件。通常情況下,我們必須將使用了@RequestBody標註的Java類與客戶端傳送的JSON相對應。
Tips: bug高發區:Java類中的屬性名與JSON中的鍵名必須完全一樣,不一樣的鍵值對是不會序列化到Java物件中的(⊙o⊙)哦。
在這個例子中,我們將HttpRequest body對映到上面的這個LoginForm 物件。
讓我們使用CURL來測試下這個介面:
這就是一個Spring REST API以及使用@RequestBody 註解將Angular客戶端傳送的JSON自動序列化成Java物件所需要的全部內容了!
3. @ResponseBody
@ResponseBody註解告訴控制器,返回的物件需要自動序列化成JSON,並通過HttpResponse body返回給客戶端。
Tips:
使用@ResponseBody註解修飾後,這個介面返回的將不是一個頁面。
假設我們有一個自定義的Response物件,如下所示:
接下來實現相應的控制器:
在瀏覽器的開發者控制檯或者使用像Postman這樣的工具,我們可以看到以下的響應:
請記住,如果控制器使用了@RestController註解,就不需要再使用 @ResponseBody了,因為它已經預設新增的。
Tips:
@RestController是一個組合註解,組合了@Controller和@ResponseBody。
4. 總結
我們已經為Spring應用構建了一個簡單的Angular客戶端,並演示瞭如何使用@RestController和@ResponseBody註解。
像往常一樣,示例程式碼在GitHub上可以找到。