1. 输出json和protobuf
新建user.proto文件
syntax = "proto3"; option go_package = ".;proto"; message Teacher { string name = 1; repeated string course = 2; }
go代码,启动Gin
package main import ( "github.com/gin-gonic/gin" "net/http" "start/gin_t/proto" ) func main() { r := gin.Default() // gin.H is a shortcut for map[string]interface{} r.GET("/someJSON", func(c *gin.Context) { c.JSON(http.StatusOK, gin.H{"message": "hey", "status": http.StatusOK}) }) r.GET("/moreJSON", func(c *gin.Context) { // You also can use a struct var msg struct { Name string `json:"user"` Message string Number int } msg.Name = "Lena" msg.Message = "hey" msg.Number = 123 // Note that msg.Name becomes "user" in the JSON // Will output : {"user": "Lena", "Message": "hey", "Number": 123} c.JSON(http.StatusOK, msg) }) r.GET("/someProtoBuf", func(c *gin.Context) { courses := []string{"python", "django", "go"} // The specific definition of protobuf is written in the testdata/protoexample file. data := &proto.Teacher{ Name: "bobby", Course: courses, } // Note that data becomes binary data in the response // Will output protoexample.Test protobuf serialized data c.ProtoBuf(http.StatusOK, data) }) // Listen and serve on 0.0.0.0:8080 r.Run(":8083") }
如何解析,拿python代码作为示例
import requests
# from requests_test.proto import user_pb2 # # user = user_pb2.Teacher() # # rsp = requests.get("http://127.0.0.1:8083/someProtoBuf") # user.ParseFromString(rsp.content) # print(user.name, user.course)
2. PureJSON
通常情况下,JSON会将特殊的HTML字符替换为对应的unicode字符,比如<
替换为\u003c
,如果想原样输出html,则使用PureJSON
func main() { r := gin.Default() // Serves unicode entities r.GET("/json", func(c *gin.Context) { c.JSON(200, gin.H{ "html": "<b>Hello, world!</b>", }) }) // Serves literal characters r.GET("/purejson", func(c *gin.Context) { c.PureJSON(200, gin.H{ "html": "<b>Hello, world!</b>", }) }) // listen and serve on 0.0.0.0:8080 r.Run(":8080") }
标签:ProtoBuf,JSON,user,func,gin,msg,Gin,string From: https://www.cnblogs.com/wlike/p/16824384.html