如何在 Apinto 實現 HTTP 與gRPC 的協議轉換 (下)

小Kit發表於2023-03-17

上文給大家詳細介紹了在 Apinto 上實現 HTTPgRPC 的協議轉換的基本內容,本篇我們將繼續講解如何在 Apinto-Dashboard 中進行配置。


配置 Apinto

Apinto 上我們提供了視覺化介面工具 Apinto-Dashboard,以降低初學者的使用成本,以下操作均在 Apinto-Dashboard 中進行配置。

1. 在全域性外掛中新建 http_to_grpc 外掛

2. 建立 gRPC 服務

在這裡,我們配置 gRPC服務的相關資訊,我們可以配置多個靜態負載地址,這裡我們填寫了 127.0.0.1:9001

3.建立 http 路由,繫結 grpc_demo 上游服務

4. 在路由中繫結 http_to_grpc 外掛

由於 gRPC 服務端示例中,我們開啟了gRPC反射,因此,在配置外掛時,開啟反射按鈕即可

注:

  • 當服務名稱不填時,則預設使用  HTTP 請求路徑的第一個/ 和第二個 / 之間的值作為服務名;

  • 當方法名稱不填時,則預設使用  HTTP 請求路徑的第二個 / 和第三個 / 之間的值作為服務名;
    ·即,若 HTTP 請求路徑上 /Service.Hello/Hello ,則此時服務名稱為 Service.Hello ,方法名稱為 Hello


關於 Protobuf 編碼器

gRPC 未開啟反射,我們需要先新建一個Protobuf 編碼器,繫結 http_to_grpc 外掛時,繫結對應的編碼器 ID 即可,詳細步驟如下:

1. 建立 Protobuf 編碼器

2. 在路由中繫結 http_to_grpc 外掛

7.png

填寫完後提交即可。


驗證協議轉換請求

1. 啟動 gRPC 伺服器

2.請求 Service.Hello 服務的 Hello 方法

在上文中,我們定義了 Hello 方法的功能:

  • HelloRequest 中的 name 欄位透過 HelloResponsemsg 欄位封裝成 hello,%s 的結果返回;

  • 將請求的 Header 作為 gRPC 響應的 Trailer 頭部返回。

呼叫結果如下:

歡迎到 GitHub 體驗 ?:https://github.com/eolinker/apinto


寫在最後

目前 Apinto 及其周邊專案已經開源,我們希望透過 Apinto 強大的外掛擴充能力,使用者可像樂高積木一樣根據需要自行擴充 Apinto 的外掛,以滿足不同的業務市場需求。

Apinto 目前屬於萌芽階段,我們希望集合廣大開源愛好者的力量,與大家一起討論方案,接受大家的批評指正,一起將產品打磨完善,做下一個端與端間的 Traffic Middleware。

這是一個開放和積極的專案,我們誠摯地邀請您一起參與到我們的專案開源工作中。 每一個貢獻都是有意義的,包括但不限於:

  • 查詢 bugs,取得效能上的提升
  • 幫助完善文件,提供使用者操作體驗
  • 提交你們的 issue,讓我們知道您的奇思妙想
  • 參與自定義外掛的開發,豐富 apinto 的能力

歡迎各位開源愛好者參與到 Apinto 專案中,和我們一起為開源事業貢獻自己的力量!

我們希望得到您的關注~

? Github : https://github.com/eolinker/apinto

相關文章