1. 程式人生 > >淺談介面(學習過程)

淺談介面(學習過程)

淺談介面

2019年12月23日23:40:57 (記錄我的學習過程)

1.為什麼我會接觸這個?

專案組組長推薦:我們先自行學習一下介面(HTTP介面)

2.提到介面,我的第一印象

  1. 陌生
  2. 熟悉又陌生
  3. 需要開始接觸,瞭解學習

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介面開發與呼叫案例

參考實戰案例:

  1. http介面開發與呼叫案例
    https://blog.csdn.net/quwenzhe/article/details/53156030
  2. http+json 格式的介面開發實踐與思考
    https://blog.csdn.net/xiongyouqiang/article/details/79248446
  3. 簡訊介面說明書
    http://www.inolink.com/connhttp.html
  4. etc...

http開發過程中使用到的工具

當然這些工具,是從他們實戰開發的例項中,get到的~

  1. postman (這個我真的用過。哈哈)
  2. getman
  3. 小么雞

我寫這個,不代表我會了。我也會和我的同事,朋友們一起討論這個知識點,相互學習,相互補充,共同把知識相輔相成的學到自己的腦袋裡。

總結一下:

  • HTTP協議
  • TCP協議
  • JSON

不要管那些花裡胡哨的,本質就是一個介面,作用就是基於http協議進行遠端通訊。