概述
//hello.proto
syntax = "proto3";
option go_package = ".;proto";
message Teacher {
string name = 1;
repeated string course = 2;
}
// protoc -I . --go_out=. hello.proto --go-grpc_out=. hello.proto
package main
import (
"github.com/gin-gonic/gin"
"net/http"
"testgrpc/gin-grpc/proto"
)
func main() {
route := gin.Default()
route.GET("/some",someOne)
err := route.Run(":9000")
if err != nil {
panic(err)
}
}
func someOne(c *gin.Context) {
name := c.Query("name")
list := []string{"test1","test2"}
user := &proto.Teacher{Name: name,Course: list}
c.ProtoBuf(http.StatusOK,user)
}
//client.go
package main
import (
"fmt"
"io/ioutil"
"net/http"
ginp "testgrpc/gin-grpc/proto"
"google.golang.org/protobuf/proto"
)
func main() {
resp , err := http.Get("http://127.0.0.1:9000/some?name=测试")
if err != nil {
panic(err)
}
defer resp.Body.Close()
data ,err := ioutil.ReadAll(resp.Body)
if err != nil {
panic(err)
}
user := &ginp.Teacher{}
err = proto.Unmarshal(data,user)
if err != nil {
panic(err)
}
fmt.Printf("%#v",*user)
}
最后
以上就是忧伤母鸡为你收集整理的Gin框架提供Protobuf作为通信协议的全部内容,希望文章能够帮你解决Gin框架提供Protobuf作为通信协议所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复