第三章. API 設(shè)計的第一次探險
RESTful 架構(gòu)遵循著一套代理可以通過交換資源通信的原則.
這套通用規(guī)則為應(yīng)用程序交換數(shù)據(jù)流和為有助于構(gòu)建一個web創(chuàng)造了巨大的可能,使得Web更開放和可訪問性.
在Web的黑暗時代,經(jīng)??梢钥吹骄W(wǎng)站聲明它們首選,支持的最好的瀏覽器."本站最好使用<瀏覽器名稱和版本>來查看"是頁面中最常見的標(biāo)語.
現(xiàn)在已不是關(guān)乎偏好了.每個瀏覽器都會解析和顯示不同HTML代碼,同時有些功能并不能像預(yù)期的一樣工作.盡管我們已經(jīng)離開了互聯(lián)網(wǎng)的的中世紀(jì)(大部分),web開發(fā)者仍繼續(xù)在為創(chuàng)建跨多設(shè)備之間的web應(yīng)用程序作斗爭.
要注意的是Web是為使得與彼此能夠更好的交流而發(fā)明的,因此,人類和軟件代理都可以作用于整個系統(tǒng)的信息共享.然而Web,以及后來的REST,是被設(shè)計成在它的體系結(jié)構(gòu)的不同中實現(xiàn)核心原則的簡單性和均勻性重復(fù).
應(yīng)用程序接口
API 是一個一些軟件組件之間進行交互的接口.所以,一個 RESTful 接口也是一個對開發(fā)者和外部應(yīng)用暴漏軟件系統(tǒng)的內(nèi)部函數(shù)的表述狀態(tài)傳遞的接口.現(xiàn)在這些可以通過API自身來對特定的資源消費和交互.
API 并不是新奇的東西,或者說它不僅僅只在 web 世界中開發(fā)應(yīng)用.事實上,一個API是指一套功能能夠通過和一些組件交互來完成.這些動作和組件可以是數(shù)據(jù)庫系統(tǒng)需要被web服務(wù)訪問,或者一張視頻卡通過通過軟件類庫暴漏了它的一些功能.在 REST 架構(gòu)中,API定義了動作通過交換狀態(tài)來訪問或者修改資源:
________ _________ ________
________________ ___________
App Data _App Interface__ API ____REST___ Client
________ _________ Interface _________
| Data | /entrypoint Client App
| Model| Server /collection REST Library
/resource HTTP Library
/action Transport Protocols
/actions Network Protocols
/collection Physical Link
/resource
/resource
/resource
API 設(shè)計過程是由應(yīng)用數(shù)據(jù)需要被一個或者一套客戶端或者服務(wù)端訪問此數(shù)據(jù)上的行為開始的.
API 已經(jīng)成為軟件開發(fā)的一個重要方面.通過API對外開放一些功能,能夠?qū)τ脩敉耆[藏內(nèi)部系統(tǒng)的復(fù)雜程度和強制分離用戶的關(guān)注點.
API 正在成為產(chǎn)品開發(fā)和企業(yè)執(zhí)行力的基礎(chǔ).