使用grpcui測試ASP.NET core gRPC服務

波斯馬發表於2022-02-16

grpcui類似Swagger UI,可以用來測試gRPC服務,使用起來特別簡單。

其原理是通過自動發現gRPC服務協議(當然前提是gRPC服務暴露了Protobuf協議),然後啟動一個帶介面的Web程式,使用者就可以在網頁中選擇要呼叫的介面、填寫引數,然後通過grpcui發起gRPC請求,最終把執行結果展示出來。

廢話先不說了,直接上圖,看效果:

img

下邊來看使用方法:

這裡以ASP.NET Core gRPC服務為例,對於其它語言開發的gRPC服務也完全沒有問題,gRPC協議都是一樣的,只不過順手寫了這個。

1、新增gRPC服務反射

首先你得建立一個ASP.NET Core gRPC服務,這個用Visual Studio或者VS Code都可以。

服務要暴露ProtoBuf協議,需要新增反射,反射是通過Grpc.AspNetCore.Server.Reflection這個包來支援的,大家按照自己喜歡的方式自行安裝就好了。

程式碼比較簡單,請直接觀看:

public void ConfigureServices(IServiceCollection services)
{
    services.AddGrpc();
    services.AddGrpcReflection(); // 劃重點!!!
}

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    app.UseRouting();
    
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapGrpcService<GreeterService>();

        if (env.IsDevelopment())
        {
            endpoints.MapGrpcReflectionService(); // 劃重點!!!
        }
    });
}

重點是程式碼中的這兩句:

services.AddGrpcReflection();

endpoints.MapGrpcReflectionService();

注意:

  • 為了安全,應該僅在開發環境啟用。否則被別人嗅探了協議,就不太好了。
  • 其實gRPCui還支援通過proto檔案獲取協議的方式,不過使用反射更加輕鬆一些。

新增完這兩句就可以啟動服務了。

2、啟動grpcui

這個工具只有一個exe檔案,在Github上開源,直接下載就好了:

Release v1.2.0 · fullstorydev/grpcui (github.com)

然後在命令列啟動:grpcui -plaintext 127.0.0.1:5002

成功啟動後,會在瀏覽器開啟上文中的Web頁面,就可以愉快的測試了。

img

注意:

  • 這裡沒有使用https,服務監聽的是 http://0.0.0.0:5002,所以這裡加了個引數 -plaintext。如果是https,不需要新增這個引數。
  • grpcui還有很多引數,你可以通過命令 gRPCui -help 來獲取。

這個工具面向所有gRPC服務,如果你使用別的技術棧,也是完全可以的。

以上就是本文主要內容了,如有錯漏歡迎指正。

參考文章:https://docs.microsoft.com/zh-cn/aspnet/core/grpc/test-tools?view=aspnetcore-6.0

收穫更多架構知識,請關注微信公眾號 螢火架構。原創內容,轉載請註明出處。
掃描二維碼關注公眾號

相關文章