11.29 Restful API是什麼?該怎麼設計API呢


Restful API是什麼?該怎麼設計API呢

實際上Restful本身不是一項什麼高深的技術,而只是一種編程風格,或者說是一種設計風格。

1.Restful API設計

在傳統的http接口設計中,我們一般只使用了get和post兩個方法,然後用我們自己定義的詞彙來表示不同的操作。而Restful API的設計則通過HTTP的方法來表示CRUD相關的操作。

因此,除了get和post方法外,還會用到其他的HTTP方法,如PUT、DELETE、HEAD等,通過不同的HTTP方法來表示不同含義的操作。

例如:下面是我設計的一組對用戶的增刪改查的Restful API

Restful API是什麼?該怎麼設計API呢

這裡可以看出,URL僅僅是標識資源的路勁,而具體的行為由HTTP方法來指定。

2.Restful API實現

現在我們再來看看如何實現上面的接口,其他就不多說,直接看代碼:

Restful API是什麼?該怎麼設計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來測試各個方法:

Restful API是什麼?該怎麼設計API呢

釋:參考UserControllerTest

因為要執行HTTP請求,所以這裡使用了MockMvc,ArticleRestController通過注入的方式實例化,不能直接new,否則ArticleRestController就不能通過Spring IoC容器來管理,因而其依賴的其他類也無法正常注入。通過MockMvc我們就可以輕鬆的實現HTTP的DELETE/PUT/POST等方法了。

4.總結

本文講解了如果通過Spring boot來實現Restful的API,其實大部分東西都是Spring和Spring MVC提供的,Spring boot只是提供自動配置的功能。

但是,正是這種自動配置,為我們減少了很多的開發和維護工作,使我們能更加簡單、高效的實現一個web工程,從而讓我們能夠更加專注於業務本身的開發,而不需要去關心框架的東西。


分享到:


相關文章: