REST API 是什么 - 程序員與服務之間溝通的語言
來源:湖北國菱計算機科技有限公司-荊州網站建設-荊州軟件開發-政府網站建設公司
時間:2020-08-20
任何語言的本質都是一套規則的合集。比如說,中文里要求句子要有主謂賓,而作為母語為中文的我們,一旦有人說了一句缺少主語的話,我們會直覺性地感覺很奇怪。
比如說,如果有人對你說“是一個神人”。
你會直覺地問:究竟誰是一個神人?
同樣的,在各個程序的溝通中,或者各個服務的溝通中,我們也需要類似“語言”的東西,讓我們可以不需要太多的上下文,就可以前端理解后端、后端也理解前端。
設想一下,有多少次你跟前端一起需要前后端 聯調?有多少次前端覺得你定義的 API 不夠方便直觀,一定要你多返回一個參數或者改一下端點路徑?
其實本質上,你們在 聯調 時就是在嘗試設計一個“語言”,以方便互相可以更容易地理解對方。
比如說,后端會要求前端說,你調用 POST /user/abc 就可以創建一個名為 abc 用戶了。
短線來講這當然沒問題,你們可以幾乎任意地定義 API 端點,任意地調整傳遞的參數。但是一旦項目開始變復雜,問題就開始出現了。
首先大家有不同的經驗和喜好,對 API 的定義可能千差萬別,所謂眾口難調
系統開始復雜后,各個系統之間的 API 因為定義的人的不同,會開始出現不一致,導致每個端口調用前需要詳細閱讀文檔(如果有的話)或者與 API 設計者無窮無盡地討論和會議
如果你的 API 是面向客戶的,比如如果你是一家軟件服務公司,那么你自定義的 API 會增加客戶接入的成本
等等等等
因此,要是有一套人類通用的"語言“或者”規范“,來指導大家定義 API 的方式,那樣該多好?
REST API 就是這樣一種規范,它是目前整個互聯網應用最廣泛的 API 規范。有意思的是,REST是由它的提出者 Roy Fielding 在他讀書期間,寫的博士論文里提出的。