Chirpstack GRPC API 的調用
首先進入ChirpStack的官網
在Application Server 可以看到GRPC的 chirpstack-api,點擊進入github,
可以看到上圖目錄結構
這里選go語言做例子
進入go的文件夾,里面是封裝好的.pb.go文件
將代碼下載到本地,用編譯器啟動,這里用的是Goland
接下來就可以編寫測試代碼了
先找到readme.md對應的語言的api文檔,查詢需要的函數
怎么查看文檔就不用說了,根據需求查詢對應函數
這里測試例子是獲取JWT的Login方法
在目錄下找出 InternalServiceClient,它的下方有Login方法
在調用方法之前,先找到返回此接口類型實例的函數,也在同一個文件下
回頭看Login方法傳入的參數,查看 LoginRequest 是什么
結構體參數需要 Email 、Password
lora server 的賬號密碼默認都為admin
根據以上的調用流程,以下為實例調用代碼:
const (
Address string = "localhost:8080" // 服務端地址 xxx,xxx,xx,xxx:8080
)
func main() {
// 創建連接
conn, err := grpc.Dial(Address, grpc.WithInsecure())
if err != nil {
fmt.Println(err)
return
}
defer conn.Close()
// 返回值為 ApplicationServiceClient
loginClient := api.NewInternalServiceClient(conn)
// 構建Login的參數
loginreq := api.LoginRequest{
Email:"admin",
Password:"admin",
}
// 調用Login方法 參數一為context上下文、二為LoginRequest結構體
r, err := loginClient.Login(context.Background(),&loginreq)
if err != nil {
log.Println(err)
return
}
log.Println(r)
}
執行結果成功拿到返回的JWT
打印返回值
在調用其他grpc函數之前,得將獲取的jwt設置進metadata,這樣jwt校驗就通過了
md := metadata.Pairs("authorization", JWT) // 剛剛獲取的jwt ctx := metadata.NewOutgoingContext(context.Background(), md)
換個grpc函數調用測試一下
md := metadata.Pairs("authorization", r.Jwt) ctx := metadata.NewOutgoingContext(context.Background(), md) appClient := api.NewApplicationServiceClient(conn) req := api.GetApplicationRequest{ // 創建要發送的結構體 Id: 1, } // 根據ID獲取應用 r2, err := appClient.Get(ctx,&req) if err != nil { log.Println(err) return } // 打印返回值 log.Println(r2)
打印返回值:
2021/06/21 17:43:55 application:<id:1 name:"APP-TEST" description:"\346\265\213\350\257\225" organization_id:1 service_profile_id:"15b399d7-01bb-441b-aa3b-e96ea 794f897" >
測試完成。