Chirpstack笔记 -- GRPC API 的调用

Posted 洲陈

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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" >

 

测试完成。

 

以上是关于Chirpstack笔记 -- GRPC API 的调用的主要内容,如果未能解决你的问题,请参考以下文章

Chirpstack 网关网桥安装

gRPC doc 阅读笔记

gRPC - 公开公共 API

gRPC系列:什么是gRPC API,它如何工作?

比较 gRPC 服务和 HTTP API

如何在 .net api 网关中使用 gRPC 服务?