<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          2023 API 排行榜新鮮出爐!盤點使用最多的 API 協(xié)議

          共 11175字,需瀏覽 23分鐘

           ·

          2023-10-23 08:54

          每個人都用過 HTTP 協(xié)議。在網(wǎng)頁端,在 App 端,大部分的數(shù)據(jù)交換都基于 HTTP 協(xié)議,但你也許會聽過其他的一些協(xié)議


          《2023 全球 API 狀況報告》里的數(shù)據(jù),我們能看到全球的開發(fā)者使用最多的 API 協(xié)議:




          這些協(xié)議有什么不同?為什么要有那么多種協(xié)議?這些協(xié)議到底要怎么使用?


          本文盤點了其中最常用的九大 API 協(xié)議/接口規(guī)范,它們分別是:

          • REST
          • GraphQL

          • SOAP/Web Service

          • WebSocket

          • Socket

          • SSE

          • gRPC

          • Dubbo

          • MsgPack




           REST


          REST 其實不是一種協(xié)議,REST  接口使用的網(wǎng)絡(luò)協(xié)議是 HTTP。


          HTTP 協(xié)議非常適合那些采用單向的請求 - 響應(yīng)模式的應(yīng)用,比如訪問社交媒體上的照片或者新聞文章,但是它并不適合需要雙方實時通信的應(yīng)用,比如在線游戲或視頻聊天。


          REST 是在開發(fā)者使用 HTTP 協(xié)議時共同遵守的設(shè)計原則,是一種軟件架構(gòu)風(fēng)格,它并不是一種硬性的技術(shù)標(biāo)準(zhǔn)。REST 風(fēng)格 API 一般長這個樣子:




          如何調(diào)用

          瀏覽器可能是最簡單的 REST 接口調(diào)用工具。瀏覽器地址欄就是一個最原始的 GET 請求發(fā)起器,它會將 GET 返回的數(shù)據(jù)展示在網(wǎng)頁里。


          但是,要實現(xiàn) POST、PUT、DELETE 等動作就要寫代碼了。當(dāng)然,你也可以使用像 Apifox 這樣的 API 工具,一鍵發(fā)起各種類型的 HTTP 請求。






           GraphQL


          在上面的 REST 接口里,我們需要預(yù)先定義好各種具體的操作的接口(獲取所有用戶,獲取特定用戶,按標(biāo)簽查詢用戶等),就像飯店里固定搭配的套餐。


          而 GraphQL 是一種靈活的數(shù)據(jù)查詢語言,讓你可以像點餐一樣精確地獲取你需要的數(shù)據(jù),好比你在餐館里直接告訴服務(wù)員想要哪些食物,以及烹飪方式,而不是被迫點一份固定的套餐。


          GraphQL 適用于那些需要大量互動、實時數(shù)據(jù)或者多層次數(shù)據(jù)的應(yīng)用。比如社交媒體的實時消息更新、即時通訊或者數(shù)據(jù)可視化工具。它能夠滿足不同應(yīng)用的各種需求,因為你可以在一個請求中包含多個查詢,從而減少了網(wǎng)絡(luò)請求的數(shù)量。



          如何調(diào)用

          當(dāng)使用 GraphQL 進(jìn)行數(shù)據(jù)調(diào)用時,你會構(gòu)建一個查詢(Query)來獲取你需要的數(shù)據(jù)。這個查詢看起來類似于一個 JSON 對象,你可以指定所需的字段和參數(shù)。以下是一個簡單的 GraphQL 查詢示例,假設(shè)我們要獲取一個博客應(yīng)用中的文章信息:



          在這個查詢中:

          • query 表示這是一個查詢操作。
          • article(id: 123) 表示我們想要獲取一篇文章,其中 id 參數(shù)為 123。

          • 在大括號 {} 內(nèi),我們指定了想要獲取的字段,如 title、contentauthor。

          • author 字段下,我們還指定了作者的信息字段,包括 nameemail。

          當(dāng)發(fā)送這個查詢到 GraphQL 服務(wù)器時,服務(wù)器會返回一個 JSON 響應(yīng),包含與查詢匹配的數(shù)據(jù)。好比構(gòu)建一個查詢,指定你需要的數(shù)據(jù)字段,然后向服務(wù)器發(fā)送查詢,并接收服務(wù)器返回的 JSON 響應(yīng)以獲取所需的數(shù)據(jù)。響應(yīng)可能如下所示:



          這個響應(yīng)包含了我們所請求的文章的標(biāo)題、內(nèi)容以及作者的信息。所有數(shù)據(jù)都以嵌套的方式返回,與查詢的結(jié)構(gòu)一致。這種方式允許客戶端精確地獲取所需的數(shù)據(jù),而不會浪費帶寬和資源。


          在 Apifox 中,可以直接使用 HTTP POST 方式發(fā)起 GraphQL API 請求。你只需要將 Body 類型指定為 GraphQL,將請求 JSON 寫入 Query 即可。


          你可以在 Query 中使用變量,將變量值寫入 Variables 框,就可以更加便利地調(diào)用固定格式的 GraphQL 請求。






           SOAP / Web Service


          SOAP(Simple Object Access Protocol,簡單對象訪問協(xié)議)是一種跟 REST 類似,但更古早一點的協(xié)議。它跟 REST 的最大的差異是使用 XML 方式作為 body 來傳遞信息。它提供了強大的功能,包括安全性、事務(wù)性操作和可擴展性,但也因其 XML 格式相對冗長而被一些新的通信協(xié)議所取代。


          Web Service 是一個比較古早的名詞,現(xiàn)在一般指使用 SOAP 協(xié)議的接口服務(wù)。



          如何調(diào)用

          要使用 SOAP/Web Service,你需要定義一個 SOAP 消息的格式,通常使用 XML 來表示消息的結(jié)構(gòu)和內(nèi)容。消息由一個 envelope(信封)包裹起來,其中包含了 header(頭部)和 body(主體)部分。header 可用于包含一些元數(shù)據(jù)和安全信息,而 body 包含實際的數(shù)據(jù)。


          在 Apifox 中調(diào)試 SOAP 接口時,只需要根據(jù)接口實際情況,手動設(shè)置 Header 的 Content-Type 的值為 text/xml; charset=utf-8application/soap+xml,然后設(shè)置 Body 格式為 xml,點擊「發(fā)送」,即可收到 SOAP 接口返回的 XML 格式的數(shù)據(jù)。






           WebSocket


          無論是 REST、GraphQL 還是 SOAP,都是一問一答式的通信。但有時我們需要更高頻的數(shù)據(jù)交換,比如實時聊天,這時候就需要一種新的協(xié)議來解決了。


          WebSocket 是一種特殊的通信協(xié)議,它與傳統(tǒng)的 HTTP 協(xié)議不同,它更像是一條電話線,允許服務(wù)器和客戶端之間進(jìn)行實時、雙向的對話。就像是你在打電話,而不只是發(fā)短信。


          WebSocket 適合處理需要實時性和雙向通信的應(yīng)用,比如在線聊天、多人協(xié)作編輯、在線游戲或者實時股票市場數(shù)據(jù)更新。它能夠讓服務(wù)器主動向客戶端發(fā)送消息,而不必等待客戶端的請求。這種特性對于那些需要即時響應(yīng)的應(yīng)用非常重要。


          與 HTTP 不同,WebSocket 不是一次性的請求-響應(yīng)模式。它通過建立一個持久連接,雙方可以隨時發(fā)送消息。這就像是你與朋友進(jìn)行實時對話,而不是發(fā)電子郵件等待回復(fù)。



          如何調(diào)用

          在 Apifox 中,你可以輸入服務(wù)器 URL,點擊「連接」,一個 Websocket 長連接就建立起來了。


          接下來,你可以通過發(fā)送 JSON 數(shù)據(jù)的方式跟服務(wù)器通信,也可以實時接收到服務(wù)器下發(fā)的數(shù)據(jù),實現(xiàn)雙向?qū)崟r數(shù)據(jù)傳輸。你可以在左下角的時間線視圖里方便地查看所有通信記錄。



          Apifox 還支持直接生成 Websocket 協(xié)議的 API 文檔。你可以點擊查看更多使用技巧:《Apifox WebSocket 調(diào)試功能你會用了嗎?






           Socket


          Socket 協(xié)議是一個非常古早的通信模型,使用 TCP 作為網(wǎng)絡(luò)通信協(xié)議,允許不同程序/計算機之間通過網(wǎng)絡(luò)傳輸數(shù)據(jù)。Socket 通信也是一種實時、雙向的通信方式,客戶端和服務(wù)器之間建立持久連接后,雙方可以隨時發(fā)送和接收數(shù)據(jù)。


          不過與 WebSocket 有所區(qū)別的是,Socket 提供了底層的網(wǎng)絡(luò)編程接口,允許開發(fā)者完全控制數(shù)據(jù)傳輸過程。并且采用 TCP 協(xié)議使得 Socket 用于更廣的場景,包括實時通信、文件傳輸、遠(yuǎn)程控制等



          如何調(diào)用

          進(jìn)入 Apifox 項目后,點擊左側(cè)搜索框旁邊的 + 號按鈕,輕點「新建 Socket 服務(wù)」選項。




          創(chuàng)建了 Socket 服務(wù)之后,可以繼續(xù)添加在 Socket 服務(wù)之下的接口。Apifox 支持自定義接口請求和響應(yīng)的數(shù)據(jù)處理函數(shù),方便進(jìn)行各種靈活的調(diào)試。






           SSE


          當(dāng)我們在使用 ChatGPT 聊天的時候,你會發(fā)現(xiàn)文字是一個一個蹦出來的,這跟微信聊天又有所不同。


          ChatGPT 使用的是 SSE(Server-Sent Events)技術(shù),全稱是服務(wù)器推送事件,它是一種基于 HTTP 協(xié)議的實時通信技術(shù)。用于在客戶端和服務(wù)器之間建立持久、單向的鏈接。雖然和 WebSocket 類似都具備實時連接功能,但 WS 是支持雙向連接的,而 SSE 是單向的,只支持服務(wù)端向客戶端發(fā)送異步消息,使得它對帶寬資源消耗較小


          也就是說,WebSocket 是兩個人互相打電話,而 SSE 是客戶端發(fā)短信,服務(wù)端講電話。



          如何調(diào)用

          使用 Apifox 調(diào)試 SSE 接口時,僅需要像調(diào)試普通的 HTTP 接口一樣新建接口。




          當(dāng)接口的返回數(shù)據(jù)的 Content-Type 包含 text/event-stream 參數(shù)時,Apifox 會自動將返回的數(shù)據(jù)解析為 SSE 事件,并以全新的時間線視圖實時更新響應(yīng)內(nèi)容。






           gRPC


          前面的各種協(xié)議,大都適用于前端和后端的通信。而 gRPC(gRPC Remote Procedure Call,遠(yuǎn)程過程調(diào)用)不同,它更多地是用于后端和后端之間的通信。


          在大型企業(yè)中,往往使用微服務(wù)架構(gòu),不同的服務(wù)由不同的系統(tǒng)實現(xiàn)。比如訂單服務(wù)、商品服務(wù)、用戶信息服務(wù)部署在不同的服務(wù)器上,這些系統(tǒng)可能使用了各自不同的技術(shù)。


          gRPC 適合用于構(gòu)建分布式系統(tǒng)中的微服務(wù)架構(gòu),尤其是需要高性能、低延遲和跨語言通信的情況。與傳統(tǒng)的 HTTP 或 REST API 相比,gRPC 更加輕量級且高效,它使用 Protocol Buffers(ProtoBuf)作為數(shù)據(jù)序列化格式,這使得數(shù)據(jù)傳輸更加緊湊和快速。


          一個典型的 gRPC 場景包括多個微服務(wù)之間的通信,例如用戶服務(wù)需要從訂單服務(wù)獲取信息。gRPC 允許你定義服務(wù)接口和方法,并生成客戶端和服務(wù)器端的代碼,使得開發(fā)過程更加簡化。這就像是國際郵件服務(wù),你只需知道如何填寫地址和標(biāo)明信件的內(nèi)容,剩下的工作由郵遞員和郵局來完成。


          在企業(yè)中,后端往往會使用 gRPC 來調(diào)用企業(yè)內(nèi)部不同系統(tǒng)之間的服務(wù),而使用 REST API 來對前端提供服務(wù)。




          如何調(diào)用

          你只需要先在 Apifox 中創(chuàng)建 gRPC 項目即可開始調(diào)試:




          Apifox 支持以下 4 種類型方法調(diào)用 gRPC 接口:

          • Unary:一元調(diào)用
          • Server Streaming:服務(wù)端流

          • Client Streaming:客戶端流

          • Bidirectional Streaming:雙向流

          相較于市面上的其它 gRPC 調(diào)試軟件,Apifox 為 gRPC 流式調(diào)用提供了一個時間線視圖,按照時間順序集中展示調(diào)用狀態(tài)、發(fā)送和收到的消息。






           Dubbo


          Dubbo 框架是由阿里巴巴開發(fā)的一款分布式服務(wù)框架,Dubbo 協(xié)議是該框架中的一部分,用于微服務(wù)之間的通信。


          Dubbo 協(xié)議的使用場景跟 gRPC 是類似的,主要用于后端之間的通信。兩者都是強大的分布式通信框架,選擇哪一個取決于你的具體需求和技術(shù)棧。如果你在 Java 生態(tài)系統(tǒng)中工作,并需要穩(wěn)定性和可用性,Dubbo 可能是更好的選擇。如果你需要跨語言支持、強類型定義和高性能的通信,gRPC 可能更適合你。


          Dubbo 協(xié)議采用了二進(jìn)制序列化和網(wǎng)絡(luò)傳輸方式,相比 REST API 采用文本模式傳輸數(shù)據(jù),二進(jìn)制格式數(shù)據(jù)傳輸模式可以提供更高的效能和花費更小的開銷,非常適合內(nèi)網(wǎng)環(huán)境。


          因此 Dubbo 協(xié)議尤其擅長處理大規(guī)模微服務(wù)架構(gòu)中的服務(wù)調(diào)用和治理問題,支持多種主流網(wǎng)絡(luò)傳輸協(xié)議和多種序列化格式,在國內(nèi)的后端開發(fā)者當(dāng)中十分流行。




          如何調(diào)用

          Apifox 支持管理與調(diào)試 Dubbo 項目,目前支持 ZooKeeper、Nacos、阿里云 EDAS 三種外部導(dǎo)入渠道。




          導(dǎo)入接口后,點擊右上角的「調(diào)用」按鈕,即可得到接口的返回結(jié)果。






           MsgPack


          MsgPack(MessagePack)也不是協(xié)議。它是一種將數(shù)據(jù)序列化成緊湊的二進(jìn)制格式的開放標(biāo)準(zhǔn)。它就像是將數(shù)據(jù)壓縮成小巧的包裹,以便于在不同系統(tǒng)之間更快地傳輸和存儲。MsgPack 適合用于需要高效傳輸數(shù)據(jù)的場景,尤其對網(wǎng)絡(luò)流量敏感的移動 APP 中。與 JSON 等文本格式相比,MsgPack 的二進(jìn)制格式更加緊湊,節(jié)省了更多帶寬和存儲空間。


          一些典型的使用場景包括:

          1. 分布式系統(tǒng)通信:MsgPack 可用于在不同的服務(wù)之間傳輸數(shù)據(jù),減少網(wǎng)絡(luò)負(fù)載,提高通信效率。
          2. 高性能應(yīng)用:對于需要快速序列化和反序列化數(shù)據(jù)的應(yīng)用,MsgPack 提供了比文本格式更快的速度。

          3. 數(shù)據(jù)存儲:MsgPack 可以用于將數(shù)據(jù)緊湊地存儲在文件或數(shù)據(jù)庫中,節(jié)省存儲空間。

          4. 嵌入式系統(tǒng):MsgPack 適用于資源有限的嵌入式系統(tǒng),因為它的解析相對輕量。

          MsgPack 有多種語言的實現(xiàn),因此可以輕松地在不同編程語言之間進(jìn)行數(shù)據(jù)交換。它還支持多種數(shù)據(jù)類型,包括數(shù)字、字符串、數(shù)組、映射和自定義類型,使得它非常靈活。



          如何調(diào)用

          在 Apifox 中,可以直接使用 HTTP POST 方式發(fā)起 MsgPack 請求,只需要將 Body 類型選擇為 MsgPack,將請求 JSON 寫入 Query 即可。







          以上列出了九種常用的 API 協(xié)議/接口規(guī)范,Apifox 現(xiàn)已全部支持




          Apifox 作為先進(jìn)的 API 設(shè)計/開發(fā)/測試工具,不斷兼容市面上流行的 API 協(xié)議,讓開發(fā)人員不必再為某個 API 協(xié)議而苦苦尋找接口調(diào)試工具。


          Apifox = Postman + Swagger + Mock + JMeter

          一個工具就可以解決 API 開發(fā) → 調(diào)試 → 管理問題,讓更多中國開發(fā)團(tuán)隊也能夠體驗到一流的一站式 API 管理方案。

          官方鏈接:http://apifox.com/b3javazlxy


          想了解更多關(guān)于 Apifox 的內(nèi)容,可以點擊「閱讀原文」前往 Apifox 官網(wǎng)查看。

          瀏覽 4557
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日本在线黄色片 | 高清免费在线中文Av | 亚洲AV久久久噜噜噜噜 | 性国产精品 | 日本三级成人网站 |