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