91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

RESTful API設計怎么理解

發布時間:2021-12-02 16:37:17 來源:億速云 閱讀:117 作者:iii 欄目:大數據

這篇文章主要介紹“RESTful API設計怎么理解”,在日常操作中,相信很多人在RESTful API設計怎么理解問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”RESTful API設計怎么理解”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

在完全深入RESTful API設計之前,詳細了解RESTful API設計者的工作細節很重要。

APIs之間不是孤立的,對于API中已經存在的應用或者服務的API,新的API要和它們在功能上獨立開來。在我看來,API設計者的職責是雙重的:

  1. 足夠理解新建API在應用中的重要細節,這樣你就能決定哪些功能需要暴露、如何暴露,以及哪些功能可以排除。

  2. 對API中的功能建模,要能解決出現的所有使用場景,同時盡可能遵守RESTful原則。

RESTful API設計中涉及到3個不同的組件:應用、API代碼和客戶端。下圖描述了組件間的相互關系:

應用

應用和為它提供的API之間要相互獨立。也許應用是GUI程序,你需要為它提供可編程接口。也許應用只能通過你設計的API訪問。

和其它任何應用一樣,需要設計API的應用也有它自己的狀態。“狀態”是動態的,執行很多操作后狀態會改變。狀態和狀態上的操作,應該被建模并暴露到API中

理解應用狀態的最簡單方法是把它描述成應用數據模型(application data model),可以表示成實體-關系圖(ER圖)。實體-關系圖能列出應用狀態中實體的細節,以及它們間的關系。

一些情景中,很容易創建實體-關系圖。假設一個web應用把所有狀態存在數據庫中,我們很容易從數據的schema中得到關系圖。其它一些沒有嚴格定義的情景下,API設計者的工作會難一些。這時,為應用創建ER圖就真的很有用。對你來說這是難得的鍛煉機會,它幫助你更好地理解應用。更重要的是,它會幫你設計出更好的RESTful API。我們一會詳細討論這個。以后的例子中,我都假設我們已經有了實體-關系圖(ER diagram)。

除了理解應用的狀態和狀態上的操作外,你還需要應用程序的入口(entry point),它讓你能獲取和更改應用狀態。這個“入口”完全由應用決定,可以有多種形式。我們把這個入口稱為應用程序接口( application interface),它的正式稱呼是API。不同的是接口不用于外部消費甚至完全沒有文檔記錄(譯者注:正規軟件開發中代碼規范也是要求寫API文檔的)。為了不產生疑惑,我們不會把接口稱為API,API這個術語保留給我們將要設計的RESTful API。

API代碼

API代碼的任務是通過應用接口獲取應用的狀態,同時提供狀態上的操作,把應用接口暴露成RESTful API。在應用程序接口和RESTful API之間有一個轉換步驟:適配應用數據模型,并且符合RESTful風格。

轉換的結果是形成RESTful風格的資源、資源上的操作以及資源之間的關系。(譯者注:API中只有狀態的概念,RESTful后形成資源的概念)我們把這些稱為RESTful資源模型(RESTful resource model)。

資源是任何RESTful API的基礎,我們會在resources中詳細介紹。現在,我們只需要把資源理解成ER圖中的實體(這也是為什么應用中沒有實體時我建議你畫ER圖)。

資源間的關系通過超鏈接表示。這一點也是設計RESTful API的基本原則(fundamental principles)。資源通常響應有限的操作(通常4個),這也是RESTful架構的第二個風格。

當把應用模型對象轉換成RESTful里的資源時,下面兩個工具函數很有用:

  • to_resource():從應用模型中獲取一個對象,然后轉換成資源。

  • from_resource():把資源轉換成應用模型中的對象。

后面不會再討論這兩個函數,當應用數據模型和資源模型相似時,函數會很簡單;不相似的話會很復雜。

客戶端

客戶端通過標準HTTP協議消費RESTful API。理論上,RESTful API也可以在其它協議之上提供。但是,由于HTTP協議非常廣泛,把RESTful API映射到另一種協議在真實場景中意義不大。因此,本文僅限于用HTTP協議相關術語描述RESTful協議。

客戶端通常使用HTTP庫來訪問RESTful API。HTTP已經成為一個相對復雜的協議,許多目標平臺/語言都有優秀的庫。因此使用這些庫很合理。

在某些情況下,可能有必要在HTTP庫之上使用通用的REST庫。但是,由于RESTful API中有一些不一致的約定,因此通用的REST庫適用于特定情況下的API。

到此,關于“RESTful API設計怎么理解”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

罗定市| 康保县| 北宁市| 水城县| 永福县| 澄迈县| 镇沅| 马关县| 柘荣县| 大同市| 措勤县| 宜都市| 泽普县| 兰溪市| 韶关市| 探索| 呼玛县| 汉源县| 那曲县| 射阳县| 神农架林区| 原阳县| 华蓥市| 江津市| 开阳县| 东源县| 安溪县| 晋江市| 嵊州市| 建平县| 藁城市| 毕节市| 临邑县| 高青县| 汉沽区| 玛多县| 莒南县| 阿城市| 云龙县| 池州市| 元朗区|