淺談接口
2019年12月23日23:40:57 (記錄我的學習過程)
1.為什么我會接觸這個?
項目組組長推薦:我們先自行學習一下接口(HTTP接口)
2.提到接口,我的第一印象
- 陌生
- 熟悉又陌生
- 需要開始接觸,了解學習
3.自我描述:接口是什么?
1.舉個例子來說:前台和后台進行數據交互(前后端分離架構),前台開發前台的,后台開發后台的,但是前台開發的是使用的模擬數據,又前台定義好數據接口(json格式),將接口定義好,寫出接口文檔,交接給后台程序員,后台程序員處理數據之后將數據轉換成接口描述的格式,來傳遞給前台使用。我之前用過的layUI前端框架,在做數據渲染的時候,自己定義一個json格式的文件就把數據模擬出來了。后台只需要通過springmvc返回值的時候返回定義好的json格式的數據就可以了,這就是我印象中的接口格式。
2.A系統訪問B系統,比如淘寶買東西,最后調用的是支付寶付款,這就是調用了支付寶的支付接口。博客什么的調用了天氣的接口,能夠直接快速使用,這些也都是接口。
3.對於我們公司的系統來說,我們開發的是核心系統,核心業務流程,但是呢外圍又有很多的子系統是和我們的核心系統進行業務關聯的,如CMS系統,財務系統,等等財務系統的數據傳輸給核心系統的時候,也是需要定義好確定的接口來完成數據的傳遞。這些也是接口
4.舉例很容易,但是接口到底是什么呢?對於一個開發人員來說,對於接口這個概念,我們需要了解到什么程度?怎么去使用接口完成開發工作呢?
5.etc....
官方:那么,接口到底是什么?
我們就需要查閱一些資料了
在查閱資料的過程中,我整理了一個思維導圖
HTTP,TCP,JSON,這是我們學習HTTP接口的三發銀彈
經過我的了解:學習HTTP接口,就是在學HTTP協議,對於這個協議,相必大家都不陌生。張嘴閉嘴就是POST,Get請求,狀態碼:2--,3--,4--,5-- 我們都經常見也都背誦的很熟。有系統的查閱過文檔嗎?哈哈。
https://developer.mozilla.org/en-US/docs/Web/HTTP/Overview
https://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol
HTTP是什么?
超文本傳輸協議?在哪里見過?瀏覽器訪問網站的時候,域名前面默認的都是HTTP吧,那么HTTP是什么呢?
Http協議是建立在TCP協議基礎之上的,當瀏覽器需要從服務器獲取網頁數據的時候,會發出一次Http請求。Http會通過TCP建立起一個到服務器的連接通道,當本次請求需要的數據完畢后,Http會立即將TCP連接斷開,這個過程是很短的。所以Http連接是一種短連接,是一種無狀態的連接。
HTTP協議的主要特點可概括如下:
1.支持客戶/服務器模式。
2.簡單快速:客戶向服務器請求服務時,只需傳送請求方法和路徑。請求方法常用的有GET、HEAD、POST。每種方法規定了客戶與服務器聯系的類型不同。由於HTTP協議簡單,使得HTTP服務器的程序規模小,因而通信速度很快。
3.靈活:HTTP允許傳輸任意類型的數據對象。正在傳輸的類型由Content-Type加以標記。
4.無連接:無連接的含義是限制每次連接只處理一個請求。服務器處理完客戶的請求,並收到客戶的應答后,即斷開連接。采用這種方式可以節省傳輸時間。
5.無狀態:HTTP協議是無狀態協議。無狀態是指協議對於事務處理沒有記憶能力。缺少狀態意味着如果后續處理需要前面的信息,則它必須重傳,這樣可能導致每次連接傳送的數據量增大。另一方面,在服務器不需要先前信息時它的應答就較快。
這個HTTP不是我們今天關注的重點,這些基礎知識還請自行補充。
TCP是什么?
看到上面說HTTP是基於TCP協議基礎之上的,那么TCP是什么呢?提到TCP,大家想到的還是三次握手?反正我是這樣。。就知道三次握手,缺不知道為了什么握手了,慚愧慚愧。
傳輸控制協議(TCP,Transmission Control Protocol)是一種面向連接的、可靠的、基於字節流的傳輸層通信協議,由IETF的RFC 793 [1] 定義。
TCP旨在適應支持多網絡應用的分層協議層次結構。 連接到不同但互連的計算機通信網絡的主計算機中的成對進程之間依靠TCP提供可靠的通信服務。TCP假設它可以從較低級別的協議獲得簡單的,可能不可靠的數據報服務。 原則上,TCP應該能夠在從硬線連接到分組交換或電路交換網絡的各種通信系統之上操作。
好吧,內容比較官方,引用自:百度百科,其他參考資料:
https://en.wikipedia.org/wiki/TCP
https://developer.mozilla.org/en-US/search?q=TCP
JSON是什么?
JSON是JavaScript Object Notation的縮寫,它是一種數據交換格式。
在JSON出現之前,大家一直用XML來傳遞數據。因為XML是一種純文本格式,所以它適合在網絡上交換數據。XML本身不算復雜,但是,加上DTD、XSD、XPath、XSLT等一大堆復雜的規范以后,任何正常的軟件開發人員碰到XML都會感覺頭大了,最后大家發現,即使你努力鑽研幾個月,也未必搞得清楚XML的規范。終於,在2002年的一天,道格拉斯·克羅克福特(DouglasCrockford)同學為了拯救深陷水深火熱同時又被某幾個巨型軟件企業長期愚弄的軟件工程師,發明了JSON這種超輕量級的數據交換格式。道格拉斯同學長期擔任雅虎的高級架構師,自然鍾情於JavaScript。他設計的JSON實際上是JavaScript的一個子集。
在JSON中,一共就這么幾種數據類型:
- number:和JavaScript的number完全一致;
- boolean:就是JavaScript的true或false;
- string:就是JavaScript的string;
- null:就是JavaScript的null;
- array:就是JavaScript的Array表示方式——[];
- object:就是JavaScript的{ ... }表示方式。
- 以及上面的任意組合。
並且,JSON還定死了字符集必須是UTF-8,表示多語言就沒有問題了。為了統一解析,JSON的字符串規定必須用雙引號"",Object的鍵也必須用雙引號""。
{
"name": "小明",
"age": 14,
"gender": true,
"height": 1.65,
"grade": null,
"middle-school": "\"W3C\" Middle School",
"skills": [
"JavaScript",
"Java",
"Python",
"Lisp"
]
}
接口是什么呢?
In computing, an interface is a shared boundary across which two or more separate components of a computer system exchange information. The exchange can be between software, computer hardware, peripheral devices, humans, and combinations of these.[1] Some computer hardware devices, such as a touchscreen, can both send and receive data through the interface, while others such as a mouse or microphone may only provide an interface to send data to a given system.[2]
在計算中,接口是一個共享邊界,計算機系統的兩個或多個單獨組件在該共享邊界上交換信息。 可以在軟件,計算機硬件,外圍設備,人員以及這些的組合之間進行交換。[1] 某些計算機硬件設備(例如觸摸屏)可以通過該接口發送和接收數據,而其他計算機硬件設備(例如鼠標或麥克風)可能僅提供將數據發送到給定系統的接口。[2]
參考:wiki https://en.wikipedia.org/wiki/Interface_(computing)
我們這里着重介紹的是,HTTP接口。
HTTP接口
還是沒說什么是HTTP接口?
不要管那些花里胡哨的,本質就是一個接口,作用就是基於http協議進行遠程通信。
接口和接口文檔長什么樣呢?
參考:https://blog.csdn.net/qq_41961113/article/details/80347341
還可以參考阿里雲啊,網易雲啊,騰訊啊,微信啊等提供的官網API接口文檔。
寫完這些,我還是比較蒙蔽的,還是只是其然,不知其所以然,為什么呢,因為啊,我還沒有在實際開發中用到接口。所以,不去用,你永遠想象不到他能干什么。所以說,在學習階段,找幾個實戰案例來學習一下,會對這個東西的應用稍微明確一點。我便搜集了一下開發案例來供自己參考。
http接口開發與調用案例
參考實戰案例:
- http接口開發與調用案例
https://blog.csdn.net/quwenzhe/article/details/53156030 - http+json 格式的接口開發實踐與思考
https://blog.csdn.net/xiongyouqiang/article/details/79248446 - 短信接口說明書
http://www.inolink.com/connhttp.html - etc...
http開發過程中使用到的工具
當然這些工具,是從他們實戰開發的實例中,get到的~
- postman (這個我真的用過。哈哈)
- getman
- 小幺雞
我寫這個,不代表我會了。我也會和我的同事,朋友們一起討論這個知識點,相互學習,相互補充,共同把知識相輔相成的學到自己的腦袋里。
總結一下:
- HTTP協議
- TCP協議
- JSON
不要管那些花里胡哨的,本質就是一個接口,作用就是基於http協議進行遠程通信。