我為此應(yīng)用程序構(gòu)建的所有功能都只適用于特定類型的客戶端:Web瀏覽器。 但其他類型的客戶端呢? 例如,如果我想構(gòu)建Android或iOS APP,有兩種主流方法可以解決這個問題。 最簡單的解決方案是構(gòu)建一個簡單的APP,僅使用一個Web視圖組件并用Microblog網(wǎng)站填充整個屏幕,但相比在設(shè)備的Web瀏覽器中打開網(wǎng)站,這種方案幾乎沒有什么賣點。 一個更好的解決方案(盡管更費力)將是構(gòu)建一個本地APP,但這個APP如何與僅返回HTML頁面的服務(wù)器交互呢?
這就是應(yīng)用程序編程接口(API)的能力范疇了。 API是一組HTTP路由,被設(shè)計為應(yīng)用程序中的低級入口點。與定義返回HTML以供Web瀏覽器使用的路由和視圖函數(shù)不同,API允許客戶端直接使用應(yīng)用程序的資源,從而決定如何通過客戶端完全地向用戶呈現(xiàn)信息。 例如,Microblog中的API可以向用戶提供用戶信息和用戶動態(tài),并且它還可以允許用戶編輯現(xiàn)有動態(tài),但僅限于數(shù)據(jù)級別,不會將此邏輯與HTML混合。
如果你研究了應(yīng)用程序中當(dāng)前定義的所有路由,會注意到其中的幾個符合我上面使用的API的定義。 找到它們了嗎? 我說的是返回JSON的幾條路由,比如第十四章中定義的/translate路由。 這種路由的內(nèi)容都以JSON格式編碼,并在請求時使用POST方法。 此請求的響應(yīng)也是JSON格式,服務(wù)器僅返回所請求的信息,客戶端負責(zé)將此信息呈現(xiàn)給用戶。
雖然應(yīng)用程序中的JSON路由具有API的“感覺”,但它們的設(shè)計初衷是為支持在瀏覽器中運行的Web應(yīng)用程序。 設(shè)想一下,如果智能手機APP想要使用這些路由,它將無法使用,因為這需要用戶登錄,而登錄只能通過HTML表單進行。 在本章中,我將展示如何構(gòu)建不依賴于Web瀏覽器的API,并且不會假設(shè)連接到它們的客戶端的類型。
本章的GitHub鏈接為:Browse, Zip, Diff.
作者:珊瑚
鏈接:http://www.itdecent.cn/p/8bcf554ddc31
來源:簡書