在这个例子中,我们将创建一个gRPC客户端和服务器应用程序。客户端将发送一个复杂的多维JSON请求消息,并从服务器接收一个简单的响应消息。一些字段将有它们的proto消息,一些将是完全未知/随机的字段。
我们在这里使用两个重要的包。protobufprotobuf包用于处理复杂的字段。jsonpb包用于处理JSON marshalling和unmarshalling。滚动到底部查看链接。
请求
这就是我们要发送的东西。它将从一个文件中读取,以保持博客的简短。它以client/request.json 的形式存储在应用程序中。
{
结构
├── Makefile
文件
制作文件
运行make compile ,生成*.pb.go 文件。
.PHONY: compile
go.mod
module github.com/inanzzz/sport
pkg/protobuf/football/league/address.proto
syntax = "proto3";
pkg/protobuf/football/league/award.proto
syntax = "proto3";
pkg/protobuf/football/league/league.proto
syntax = "proto3";
pkg/protobuf/football/response.proto
syntax = "proto3";
pkg/protobuf/football/service.proto
syntax = "proto3";
client/main.go
package main
football/client.go
package football
server/main.go
package main
football/server.go
package football
测试
服务器
客户端
结果
当你发送开头所示的JSON文件时,服务器将输出完全相同的JSON内容。如果你发送{} 或所有的null 值,结果应该如下图所示。
# Request 1
你可以看到,所有的字段都被设置为零值。
# Result