ジンの研究

09 ジンフレームワークテンプレートのレンダリング

package main

import (
   "github.com/gin-gonic/gin"
   "net/http"
)

func main() {
   r := gin.Default()

   r.LoadHTMLFiles("templates/index.tmpl") //解析模版

   r.GET("/index", func(c *gin.Context) {
      //http请求
      c.HTML(http.StatusOK, "index.tmpl", gin.H{ //模版渲染
         "title": "liwenzhou.com",
      })
   })

   r.Run(":9090") //启动server
}

インデックス.tmpl

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Hello</title>
</head>
<body>
{
   
   {.title}}
</body>
</html>

10 gin フレームワークは json データを返します

package main

import (
   "github.com/gin-gonic/gin"
   "net/http"
)

func main() {
   //Default返回一个默认的路由引擎
   r := gin.Default()

   r.GET("/json", func(c *gin.Context) {
      //方法1:使用map数据
      data := gin.H{"name": "小王子", "age": 18, "sex": "男"}
      c.JSON(http.StatusOK, data)
   })

   //方法2 结构体  灵活使用tag定制化
   type msg struct {
      Name string `json:"name"`
      Age  int
      Sex  string
   }
   r.GET("/jgt", func(c *gin.Context) {
      data := msg{
         Name: "大王子",
         Age:  19,
         Sex:  "男",
      }
      c.JSON(http.StatusOK, data)
   })

   r.Run(":9090")
}

18. ミドルウェア

package main

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

// m1 是一个统计耗时请求耗时的中间件
func m1() gin.HandlerFunc {
    
    
	return func(c *gin.Context) {
    
    
		fmt.Println("m1  in")
		//计时
		start := time.Now()
		// 调用该请求的剩余处理程序
		c.Next()
		// 不调用该请求的剩余处理程序
		// c.Abort()
		// 计算耗时
		cost := time.Since(start)
		log.Println(cost)
		fmt.Println("m1  out")
	}
}

func m2() gin.HandlerFunc {
    
    
	return func(c *gin.Context) {
    
    
		fmt.Println("m2  in")
		//计时
		c.Set("name", "小王子")
		c.Next()
		fmt.Println("m2  out")
	}
}

func main() {
    
    
	r := gin.Default()
	r.Use(m1(), m2()) //全局注册中间件函数StatCost()
	r.GET("/index", func(c *gin.Context) {
    
    
		name, ok := c.Get("name")
		if !ok {
    
    
			name = "匿名用户"
		}
		c.JSON(http.StatusOK, gin.H{
    
    "msg": name})
	})
	r.Run(":9090")
}

画像.png

参考ブログ:https://www.liwenzhou.com

おすすめ

転載: blog.csdn.net/qq_35583325/article/details/131401991