簡單的說:http 通過不同的方法表示操作(對應資料庫增刪改查),url 表示操作的物件(對應資料庫、表、記錄等物件)。這部分 url 通常是後端設計,前端直接呼叫。如果前端處理部分全棧任務,那麼也需要了解一部分 restful 設計風格。
api與使用者的通訊協議,總是使用https協議。
todo: socket 協議是否支援?socket協議的特徵?
應該盡量將api部署在專用網域名稱之下。
如果確定api很簡單,不會有進一步擴充套件,可以考慮放在主網域名稱下。
應該將api的版本號放入url。
另一種做法是,將版本號放在http頭資訊中,但不如放入url方便和直觀。github採用這種做法。
路徑又稱"終點"(endpoint),表示api的具體**。
在restful架構中,每個**代表一種資源(resource),所以**中不能有動詞,只能有名詞,而且所用的名詞往往與資料庫的**名對應。一般來說,資料庫中的表都是同種記錄的"集合"(collection),所以api中的名詞也應該使用複數。
舉例來說,有乙個api提供動物園(zoo)的資訊,還包括各種動物和雇員的資訊,則它的路徑應該設計成下面這樣。
對於資源的具體操作型別,由http動詞表示。常用的http動詞有下面五個(括號裡是對應的sql命令)。
還有兩個不常用的http動詞。 下面是一些例子。 如果記錄數量很多,伺服器不可能都將它們返回給使用者。api應該提供引數,過濾返回結果。下面是一些常見的引數。
引數的設計允許存在冗餘,即允許api路徑和url引數偶爾有重複。比如,get /zoo/id/animals 與 get /animals?zoo_id=id 的含義是相同的。伺服器向使用者返回的狀態碼和提示資訊,常見的有以下一些(方括號中是該狀態碼對應的http動詞)。
狀態碼的完全列表參見這裡。如果狀態碼是4xx,就應該向使用者返回出錯資訊。一般來說,返回的資訊中將error作為鍵名,出錯資訊作為鍵值即可。
針對不同操作,伺服器向使用者返回的結果應該符合以下規範。 比如,當使用者向api.example.com的根目錄發出請求,會得到這樣乙個文件。
上面**表示,文件中有乙個link屬性,使用者讀取這個屬性就知道下一步該呼叫什麼api了。rel表示這個api與當前**的關係(collection關係,並給出該collection的**),href表示api的路徑,title表示api的標題,type表示返回型別。
}
hypermedia api的設計被稱為hateoas。github的api就是這種設計,訪問api.github.com會得到乙個所有可用api的**列表。
從上面可以看到,如果想獲取當前使用者的資訊,應該去訪問api.github.com/user,然後就得到了下面結果。
上面**表示,伺服器給出了提示資訊,以及文件的**。
(1)api的身份認證應該使用oauth 2.0框架。
(2)伺服器返回的資料格式,應該盡量使用json,避免使用xml。
RestfulAPI使用舉例
1 建立django專案testrestfulapi urlpatterns url r admin admin.site.urls url r asset views.assetview.as view 複製 複製 def get self,request 返回查詢資訊 def post self...
web前端網頁設計作業 如何學習網頁前端設計培訓?
學習網頁的前端設計分為幾個步驟或者說幾個網頁設計教程大類。乙個是熟練掌握各種網頁設計需要的操作軟體,然後就是web介面設計與專案設計,最後還有web整站設計實訓。如何學習網頁的前端設計呢?許多零基礎的學員想要從事網頁設計或者網頁前端的工作,想要成為一名網頁設計師都不知道從何學起。非凡教育的特色課程專...
yii2 RESTful api的詳細使用
什麼是restful風格的api 對於各種客戶端裝置與服務端的通訊,我們往往都通過api為客戶端提供資料,提供某種資源。關於restful的概念,一查一大推,一兩句也解釋不清,姑且先按照我們通俗的理解 在眾多風格 眾多原則的api中,restful就是一套比較優秀的介面呼叫方式。yii2如何實現re...