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")
}

最新文章

  1. PHP文件读写操作之文件写入代码
  2. 消息中间件Notify和MetaQ-阿里中间件
  3. EventKit 学习(译)
  4. Kali 找回root 密码的操作步骤
  5. Zabbix监控mysql配置及故障告警配置
  6. 项目视频讲解_[HeyJava][尚学堂][CMS文章内容管理系统]
  7. 如何在C#中使用全局鼠标、键盘Hook
  8. Codeforces 112B-Petya and Square(实现)
  9. python实现单向链表
  10. android术语笔记
  11. 如何配置web服务器
  12. openstack trove,使pylint忽略错误
  13. 编译安装python3.6后pip3无法安装模块问题处理
  14. 3.2、Android Studio在物理设备中运行APP
  15. ASP.NET Core 入门教程 9、ASP.NET Core 中间件(Middleware)入门
  16. Spark菜鸟记录
  17. Analysis Services(SSAS) 性能优化
  18. 【Spark-core学习之四】 Spark任务提交
  19. jisuanqi
  20. python测试开发django-28.发送邮件send_mail

热门文章

  1. js能力测评——移除数组中的元素
  2. Centos7 使用Docker 部署mssql 2017
  3. JavaScript-状态模式
  4. 常见Linux命令学习
  5. java循环语句 总结笔记
  6. Java基础之一、入门知识
  7. JS中函数的本质,定义、调用,以及函数的参数和返回值
  8. 安装SSDB注意事项
  9. sql关系型运算符优先级高到低为:not >and> or
  10. Life is Strange:《奇异人生》