proto
syntax = "proto3";
option go_package = ".;proto";
message Result {
string name = 1;
repeated string course = 2;
}
使用命令生成go代码
protoc -I . result.proto --go_out=plugins=grpc:.
Server
package main
import (
"ShopBefore/gintstart/ch06/proto"
"github.com/gin-gonic/gin"
"net/http"
)
func main() {
r := gin.Default()
r.GET("/protoBuf", returnProtoBuf)
r.Run(":8081")
}
func returnProtoBuf(c *gin.Context) {
c.ProtoBuf(http.StatusOK, &proto.Result{
Name: "番茄炒蛋",
Course: []string{
"java",
"go",
},
})
}
Client
package main
import (
proto1 "ShopBefore/gintstart/ch06/proto"
"fmt"
"google.golang.org/protobuf/proto"
"io/ioutil"
"net/http"
)
func main() {
resp, _ := http.Get("http://localhost:8081/protoBuf")
bytes, _ := ioutil.ReadAll(resp.Body)
var res proto1.Result
_ = proto.Unmarshal(bytes, &res)
// 番茄炒蛋 [java go]
fmt.Println(res.Name,res.Course)
}