在gRPC客户端和服务器Golang应用程序中处理复杂的JSON请求

105 阅读1分钟

在这个例子中,我们将创建一个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

参考资料