ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Chirpstack笔记 -- GRPC API 的调用

2021-06-21 18:05:47  阅读:174  来源: 互联网

标签:md err api -- GRPC API Println Login metadata


Chirpstack GRPC API 的调用

首先进入ChirpStack的官网

https://www.chirpstack.io/

 

 

 

 

 

 

 

在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" >

 

测试完成。

 

标签:md,err,api,--,GRPC,API,Println,Login,metadata
来源: https://www.cnblogs.com/zhouqichen/p/14914901.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有