實際上Restful本身不是一項什麼高深的技術,而只是一種編程風格,或者說是一種設計風格。
1.Restful API設計
在傳統的http接口設計中,我們一般只使用了get和post兩個方法,然後用我們自己定義的詞彙來表示不同的操作。而Restful API的設計則通過HTTP的方法來表示CRUD相關的操作。
因此,除了get和post方法外,還會用到其他的HTTP方法,如PUT、DELETE、HEAD等,通過不同的HTTP方法來表示不同含義的操作。
例如:下面是我設計的一組對用戶的增刪改查的Restful API
這裡可以看出,URL僅僅是標識資源的路勁,而具體的行為由HTTP方法來指定。
2.Restful API實現
現在我們再來看看如何實現上面的接口,其他就不多說,直接看代碼:
我們再來分析一下這段代碼:
(1)我們使用的是@RestController這個註解,而不是@Controller,不過這個註解同樣不是Spring boot提供的,而是Spring MVC4中的提供的註解,表示一個支持Restful的控制器。
(2)這個類中有三個URL映射是相同的,即都是/user/{id},這在@Controller標識的類中是不允許出現的。這裡的可以通過method來進行區分,produces的作用是表示返回結果的類型是JSON。
(3)@PathVariable這個註解,也是Spring MVC提供的,其作用是表示該變量的值是從訪問路徑中獲取。
所以看來看去,這個代碼還是跟Spring boot沒太多的關係,Spring boot也僅僅是提供自動配置的功能,這也是Spring boot用起來很舒服的一個很重要的原因,因為它的侵入性非常非常小,你基本感覺不到它的存在。
3.測試
代碼寫完了,怎麼測試?除了GET的方法外,都不能直接通過瀏覽器來訪問,當然,我們可以直接通過postman來發送各種http請求。不過我還是比較支持通過單元測試類來測試各個方法。這裡我們就通過Junit來測試各個方法:
釋:參考UserControllerTest
因為要執行HTTP請求,所以這裡使用了MockMvc,ArticleRestController通過注入的方式實例化,不能直接new,否則ArticleRestController就不能通過Spring IoC容器來管理,因而其依賴的其他類也無法正常注入。通過MockMvc我們就可以輕鬆的實現HTTP的DELETE/PUT/POST等方法了。
4.總結
本文講解了如果通過Spring boot來實現Restful的API,其實大部分東西都是Spring和Spring MVC提供的,Spring boot只是提供自動配置的功能。
但是,正是這種自動配置,為我們減少了很多的開發和維護工作,使我們能更加簡單、高效的實現一個web工程,從而讓我們能夠更加專注於業務本身的開發,而不需要去關心框架的東西。
閱讀更多 程序員Shawei 的文章