Chirpstack筆記 -- GRPC API 的調用


Chirpstack GRPC API 的調用

首先進入ChirpStack的官網

https://www.chirpstack.io/

 

 

 

 

 

 

 

在Application Server 可以看到GRPCchirpstack-api,點擊進入github,

 

 

 

 

 

 

 

 

 

 

可以看到上圖目錄結構

這里選go語言做例子

進入go的文件夾,里面是封裝好的.pb.go文件

 

 

 

 

將代碼下載到本地,用編譯器啟動,這里用的是Goland

 

接下來就可以編寫測試代碼了

先找到readme.md對應的語言的api文檔,查詢需要的函數

 

 

 怎么查看文檔就不用說了,根據需求查詢對應函數

 

這里測試例子是獲取JWTLogin方法

在目錄下找出 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" >

 

測試完成。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM