栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Go语言

Protobuf 介绍与实战5:Protobuf版本的helloworld?用protobuf来定义数据结构,作为前后端交互的数据形式?

Go语言 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Protobuf 介绍与实战5:Protobuf版本的helloworld?用protobuf来定义数据结构,作为前后端交互的数据形式?

  1  go grpc-go 相关技术专栏 总入口

  2  Protobuf介绍与实战 图文专栏 文章目录

本篇文章分享一下,使用protobuf作为前后端数据交换协议的样例。

测试用例说明:

  • 客户端
    采用go语言;
  • 服务器端
    分别采用Java语言和Go语言进行说明。
1、使用protobuf的一般流程

2、通过proto文件存储数据交换协议
2.1、创建proto文件

创建一个文件,将文件的后缀改成proto即可。(通过什么工具无所谓)

2.2、编写一个helloworld级别的数据交换内容(message)

显示指定protobuf的版本,创建数据结构

到目前为止一个简单的数据结构就定义好了。
注意

为了节省时间,上面图片里的int8就不重新截图修改了。

3、服务器端为Java版本的情况
3.1、生成Java版本的类库

服务器端用Java实现

将生成好的代码,拷贝到Java工程里正确的包路径下

3.2、让springboot工程增加解析protobuf协议的能力

增加Config文件,如下图所示:

3.3、设置请求协议为protobuf

Java工程是用springboot工程;

获取到请求后,需要按照protobuf协议进行解析,就是序列化,反序列化。

这里提供了两种注解方式:

3.4、更新pom.xml依赖文件

4、服务器端为go版本的情况

服务器端获取message.pb.go的方式

服务器端代码说明

同样,如果客户端的序列化方式不满足要求,服务器就会报错。

5、客户端为go版本的情况
5.1、生成go版本的类库

客户端用go实现

5.2、go代码说明

服务器端会报下面的错误
WARN 32189 — [nio-9191-exec-1] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.http.converter.HttpMessageNotReadableException: I/O error while reading input message; nested exception is com.google.protobuf.InvalidProtocolBufferException$InvalidWireTypeException: Protocol message tag had invalid wire type.]

下一篇文章
  Protobuf 介绍与实战6:Protobuf、Json作为数据存储场景介绍(将Protobuf对象存储成文件后,为什么有些内容还是能看懂呢?

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/990997.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号