數(shù)據(jù)傳輸,數(shù)據(jù)調(diào)用中的那些常用方式
在互聯(lián)網(wǎng)和物聯(lián)網(wǎng)高度發(fā)達的今天,似乎一切都可以連接起來,而彼此連接通訊的方式就是API,而對于API,有很多種方式進行數(shù)據(jù)的傳輸,今天我們就來說一說API通信的演變過程。
SOAP
它的全稱叫做簡單對象訪問協(xié)議,它是最早人們用來進行數(shù)據(jù)傳輸?shù)耐ㄓ崊f(xié)議,它通過xml定義了服務(wù)調(diào)用的參數(shù)和類型,定義了正文格式,定義了響應(yīng)方式, 它可以通過http協(xié)議進行傳輸,也可以通過smtp協(xié)議或者tcp協(xié)議進行傳輸,因為xml的冗長,在消息過多的時候,它的傳輸數(shù)據(jù)會大大增加。
因此,soap這種數(shù)據(jù)傳輸方式已經(jīng)逐漸被歷史舞臺所淘汰。
JSON
在xml格式冗余數(shù)據(jù)過多的時候,人們發(fā)現(xiàn)json數(shù)據(jù)格式可以傳輸更多的信息,并且json被很多編程語言所支持,因此,越來越多的api采用json數(shù)據(jù)格式來對外提供服務(wù)。
可以說現(xiàn)在開放的第三方api,一定會提供json的接口數(shù)據(jù)格式,當然,有些第三方也會在支付接口中返回xml的數(shù)據(jù)通訊格式。
REST
rest全稱是資源表現(xiàn)形式的狀態(tài)變化,它是一種架構(gòu)風(fēng)格,用來約束資源的查找和定位。
它不是數(shù)據(jù)的傳輸格式,它也不是單單約束數(shù)據(jù)的傳輸格式,它約束的是資源的狀態(tài)改變方式,它把一切都看成資源。
這里的表現(xiàn)形式指的是json,xml或者html任何數(shù)據(jù)格式,包括圖片格式。
狀態(tài)變化指的是通過GET,POST,DELETE,PUT等動作來修改它的狀態(tài),使它的狀態(tài)增加,減少,被刪除等。
REST 提供的是一個無狀態(tài)的服務(wù),它不會記錄訪問者的上次訪問狀態(tài)。
雖然很多問題可以被rest來解決,比如交易映射,增刪改查映射,文檔映射,但是還是有很多情況下,rest無法使用所有的映射情況。
GRPC
gRPC 是來自 Google 的現(xiàn)代輕量級通信協(xié)議。它主要是用來解決遠程過程調(diào)用的問題。
在分布式系統(tǒng)中,各個系統(tǒng)經(jīng)常需要調(diào)用其它系統(tǒng)的服務(wù),除了通過http接口方式進行調(diào)用之外,還有其它的調(diào)用方式,gRPC就是其中的一種。
它是非常有效的一種方法,它利用了 HTTP/2 的特性,解決了同步發(fā)送問題,它可以進行廣播發(fā)送,也可以實現(xiàn)多路復(fù)用,通過一個連接,它可以傳輸更多的消息。
它采用的是二進制的數(shù)據(jù)格式,相比于json,xml等文本格式,它大大縮小了數(shù)據(jù)傳輸?shù)捏w積,同樣的帶寬可以更快更多地傳輸消息。
GraphQL
GraphQL 是一種針對 Graph(圖狀數(shù)據(jù))進行查詢特別有優(yōu)勢的 Query Language(查詢語言),所以叫做 GraphQL。
GraphQL 是 Facebook 發(fā)明的,它為查詢api提供了另一種方式,可以通過一個接口,根據(jù)不同的查詢條件,返回不同的數(shù)據(jù)。
GraphQL 允許您在單個查詢中詢問您想要的內(nèi)容,從而節(jié)省帶寬并減少瀑布式請求。它還使客戶端能夠請求他們自己獨特的數(shù)據(jù)規(guī)范。
API 開發(fā)人員使用 GraphQL 創(chuàng)建一個模式來描述客戶端可以通過該服務(wù)查詢的所有可能的數(shù)據(jù)。GraphQL 模式由對象類型組成,這些類型定義了您可以請求哪種類型的對象以及它具有哪些字段。當查詢進來時,GraphQL 會根據(jù)架構(gòu)驗證查詢。
GraphQL 查詢不僅能夠獲得資源的屬性,還能沿著資源間引用進一步查詢。典型的 REST API 請求多個資源時得載入多個 URL,而 GraphQL 可以通過一次請求就獲取你應(yīng)用所需的所有數(shù)據(jù)。這樣一來,即使是比較慢的移動網(wǎng)絡(luò)連接下,使用 GraphQL 的應(yīng)用也能表現(xiàn)得足夠迅速。
總結(jié)
在萬物互聯(lián)的時代,人們總是必不可少地需要跟第三方接口打交道,或者是向第三方提供接口服務(wù),我們總是希望我們的程序可以更快,更高效,更便捷,因此開發(fā)人員不斷研發(fā)和改進技術(shù),未來的接口服務(wù)不是第三方提供什么服務(wù)來給用戶使用,而是用戶想要什么數(shù)據(jù)就可以從第三方調(diào)取。




















 
 
 




 
 
 
 