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