一. 什麼是接口html
接口是一種用來定義程序的協議,它描述可屬於任何類或結構的一組相關行爲。python
接口是一組規則的集合,它規定了實現本接口的類或接口必須擁有的一組規則。體現了天然界「若是你是……則必須能……」的理念。web
接口是在必定粒度視圖上同類事物的抽象表示。由於「同類事物」這個概念是相對的,它由於粒度視圖不一樣而不一樣。數據庫
二. 爲何要使用接口?而不是直接實現呢?api
接口的使用並不是老是從設計的角度來考慮。接口和python其餘語法現象同樣,共同構成了python整個語言體系。服務器
接口的意義在於 抽象、不拘細節,從而使同類事物在同一高度具備通用及可替代性。markdown
在系統分析和架構中,分清層次和依賴關係,每一個層次不是直接向其上層提供服務(即不是直接實例化在上層中),而是經過定義一組接口,僅向上層暴露其接口功能,上層對於下層僅僅是接口依賴,而不依賴具體類。架構
- 系統靈活性加強
當下層須要改變時,只要接口及接口功能不變,則上層不用作任何修改。甚至能夠在不改動上層代碼時將下層整個替換掉,就像咱們將一個WD的60G硬盤換成一個希捷的160G的硬盤,計算機其餘地方不用作任何改動,而是把原硬盤拔下來、新硬盤插上就好了,由於計算機其餘部分不依賴具體硬盤,而只依賴一個IDE接口,只要硬盤實現了這個接口,就能夠替換上去。 - 不一樣部件或層次的開發人員能夠並行開工
就像造硬盤的不用等造CPU的,也不用等造顯示器的,只要接口一致,設計合理,徹底能夠並行進行開發,從而提升效率。
那麼具體何時用,何時不用呢?在常見的三層架構中,有如下幾個層次,分別進行說明:app
- 界面層
也就是展現層,直接呈現給用戶的,可能不一樣的軟件有不一樣的呈現方式,好比Web,WinForm,甚至移動APP,在這個層次,我認爲是沒有必要寫太多的接口。 - 業務邏輯層
這個層次,業務邏輯,能夠根據須要使用接口。若是是直接讀寫數據庫什麼的,就直接用調用數據庫訪問層的接口。若是是與多個第三方接口進行交互,那麼就須要接口,不一樣的渠道各自實現。 - 數據訪問層 數據訪問層,最好使用接口,好比數據庫訪問,這種能夠根據不一樣的數據庫實現相應的接口向業務邏輯層提供服務。
三.接口請求的類型工具
http1.0定義了三種請求方法:get,post,head
http1.1新增了五種請求方法:options,put,delete,trace,connect
Get:請求指定的頁面信息,並返回實體。Get能夠說是最多見的,它本質就是發送一個請求來獲取服務器上的某一資源,資源經過一組http頭和呈現數據返回給客戶。
Head:相似於get請求,只不過返回的響應中沒有指定的內容,用於獲取報頭。
Post:向服務器提交數據。這個方法用途普遍,幾乎全部的提交操做都是靠這個完成。
Put:從客戶端向服務器傳送的數據取代指定的文檔的內容。Put與post都是向服務器發送數據,他們之間有一個重要的區別,put一般指定了資源的存放位置,而post沒有,post的數據存放位置由服務器本身決定。
Delete:請求服務器刪除指定的頁面。刪除某一個資源
Connect:http1.1協議中預留給可以將連接改成管道方式的代理服務器。
Options:容許客戶端查看服務器的性能。返回服務器針對特定資源所支持的http請求方法。
Trace:回顯服務器收到的請求,主要用於測試或者診斷。
四.接口規範和接口文檔
接口規範的重要性
無規矩不成方圓,爲了web/app開發人員與後臺接口開發人員更好的配合,因此咱們須要制定接口規範。接口,是Web/APP端與服務器端交互密不可分的環節,接口的規範性會直接影響雙方對接過程當中的效率和質量。本着快速高效開發的目的性,避免對接過程當中的錯誤率,接口應當有規範的約束。
接口文檔
後臺接口人員和移動端開發人員之間的配合確定少不了接口文檔這種利器!像中大型項目可能一個接口包含的字段就有上百個,若是沒有接口文檔,僅僅靠兩我的口頭交流,那估計一天就能搞定幾個接口配合。
接口文檔有哪幾種形式哪?
1 Excel,Word等文檔形式。
2 接口管理開源網站
接口文檔和接口測試工具--apipost
它既能夠測試接口也可根據測試的接口生成文檔,有在線文檔,離線文檔如:html\markdown和word格式文檔,直接生成不用本身手寫.