码迷,mamicode.com
首页 > 其他好文 > 详细

Gin_渲染

时间:2020-02-28 01:00:43      阅读:59      评论:0      收藏:0      [点我收藏+]

标签:stat   pat   span   github   man   实现   long   some   context   

1. 各种数据响应格式

package main

import (
"github.com/gin-gonic/gin"
"github.com/gin-gonic/gin/testdata/protoexample"
)

// 多种响应方式
func main() {
	// 创建路由
	r := gin.Default()
	// 1.json
	r.GET("/someJSON", func(c *gin.Context) {
		c.JSON(200, gin.H{"message": "someJSON", "status": 200})
	})
	// 2. 结构体响应
	r.GET("/someStruct", func(c *gin.Context) {
		var msg struct {
			Name    string
			Message string
			Number  int
		}
		msg.Name = "root"
		msg.Message = "message"
		msg.Number = 123
		c.JSON(200, msg)
	})
	// 3.XML
	r.GET("/someXML", func(c *gin.Context) {
		c.XML(200, gin.H{"message": "abc"})
	})
	// 4.YAML响应
	r.GET("/someYAML", func(c *gin.Context) {
		c.YAML(200, gin.H{"name": "zhangsan"})
	})
	// 5.protobuf格式,谷歌开发的高效存储读取的工具
	// 数组?切片?如果自己构建一个传输格式,应该是什么格式?
	r.GET("/someProtoBuf", func(c *gin.Context) {
		reps := []int64{int64(1), int64(2)}
		// 定义数据
		label := "label"
		// 传protobuf格式数据
		data := &protoexample.Test{
			Label: &label,
			Reps:  reps,
		}
		c.ProtoBuf(200, data)
	})

	r.Run(":8000")
}

2. HTML模板渲染

技术图片

技术图片

技术图片

3. 重定向

301 http.StatusMovedPermanently

技术图片

4. 同步和异步

 goroutine机制可以方便地实现异步处理

另外,在启动新的goroutine时,不应该使用原始上下文,必须使用它的只读副本

package main

import (
	"github.com/gin-gonic/gin"
	"time"
	"log"
)

func main() {
	// 1.创建路由
	// 默认使用了2个中间件Logger(), Recovery()
	r := gin.Default()
	// 1.异步
	r.GET("/long_async", func(c *gin.Context) {
		// 需要搞一个副本
		copyContext := c.Copy()
		// 异步处理
		go func() {
			time.Sleep(3 * time.Second)
			log.Println("异步执行:" + copyContext.Request.URL.Path)
		}()
	})
	// 2.同步
	r.GET("/long_sync", func(c *gin.Context) {
		time.Sleep(3 * time.Second)
		log.Println("同步执行:" + c.Request.URL.Path)
	})

	r.Run(":8000")
}

Gin_渲染

标签:stat   pat   span   github   man   实现   long   some   context   

原文地址:https://www.cnblogs.com/yzg-14/p/12375323.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!