golang 安装gin包、创建路由基本总结

文章目录


一、安装gin包和热加载包

  1. 首先终端新建一个main.go
  2. 然后go mod init '项目名称'
  3. 执行以下命令 安装gin包
go 复制代码
go get -u github.com/gin-gonic/gin
  1. 终端安装热加载包
go 复制代码
go get github.com/pilu/fresh
  1. 终端输入fresh 运行 ,之后文件的改动,项目自动重新热加载
go 复制代码
fresh
  1. 简单示例代码
go 复制代码
package main

import (
	"github.com/gin-gonic/gin"
)
func main (){
	r := gin.Default() // 创建一个路由引擎
	// 配置路由
	r.GET("/", func(c *gin.Context) {
		c.String(200, "你好,gin")
	})
}

二、路由简单场景总结

  1. 返回string数据
go 复制代码
    /*1.创建路由*/
	r := gin.Default() // 创建一个路由引擎
	// 配置路由
	r.GET("/", func(c *gin.Context) {
		c.String(200, "你好,gin")
	})
	
	// 返回string数据
	r.POST("/ping", func(c *gin.Context) {
		c.String(http.StatusOK, "你好,gin") //http.StatusOK 表示200的状态码
	})
  1. 返回json数据
go 复制代码
  r.GET("/json", func(c *gin.Context) {
		//gin.H是 map[string]interface{} 的类型别名:用于快速创建键值对形式JSON
		c.JSON(http.StatusOK, gin.H{
			"code": 200,
			"data": gin.H{
				"name": "张三",
				"age":  18,
			},
		})
	})
  1. 返回结构体
go 复制代码
	
 type Article struct {
	Title   string `json:"title"` //json序列化时的键名,Title在json中以小写展示
	Desc    string `json:"desc"`
	Content string `json:"content"`
  }


   r.GET("/json1", func(c *gin.Context) {
		a := &Article{Title: "标题", Desc: "描述", Content: "内容"} //使用指针是避免每次都要拷贝结构体,不使用指针也可以访问数据
		//gin.H是 map[string]interface{} 的类型别名:用于快速创建键值对形式JSON
		c.JSON(http.StatusOK, gin.H{
			"code": 200,
			"data": a,
		})

	})
  1. jsonp返回
go 复制代码
   type Article struct {
	Title   string `json:"title"` //json序列化时的键名,Title在json中以小写展示
	Desc    string `json:"desc"`
	Content string `json:"content"`
    }
  
  
   	// http://localhost:8080/jsonp?callback=xxx
	//返回 xxx({"code":200,"data":{"title":"标题-jsonp","desc":"描述","content":"内容"}});
	r.GET("/jsonp", func(c *gin.Context) {
		a := &Article{Title: "标题-jsonp", Desc: "描述", Content: "内容"}
		//gin.H是 map[string]interface{} 的类型别名:用于快速创建键值对形式JSON
		c.JSONP(http.StatusOK, gin.H{
			"code": 200,
			"data": a,
		})
	})
  1. 返回XML
go 复制代码
  r.GET("/xml", func(c *gin.Context) {
		c.XML(http.StatusOK, gin.H{
			"code":  200,
			"title": "小米SU7",
		})

	})
  1. 返回模版 html
go 复制代码
   	/*向html中传入普通数据*/
   r.GET("/html", func(c *gin.Context) {
		 c.HTML(http.StatusOK, "goods.html", gin.H{ 
		   "code": 200,
		   "title": `小米SU7`,
		 })
		 
		/*html中使用 .title接收*/
	  <h1 class="text-center my-4">{{.title}}</h1>
go 复制代码
   
	/*向html中传入传入结构体*/
	r.GET("/html", func(c *gin.Context) {
		b := &Article{Title: "小米SU7年轻人的第一辆车", Desc: "描述", Content: "内容"} 
		c.HTML(http.StatusOK, "goods.html", gin.H{
			"code":  "200",
			"data":  b,
		})
	})


	/* 结构体赋值变量  $t */
	 {{$t := .data.Title}}
      <h3>{{$t}}</h3>
      
	/* 解构结构体  with */
	 {{with .data}}
      <p>{{.Title}}</p>
      {{end}}
go 复制代码
	/*向html中传入变量,模版条件判断*/
	r.GET("/html", func(c *gin.Context) {
		c.HTML(http.StatusOK, "goods.html", gin.H{
			"code":  "200",
			"price": 50,
		})
	})

	 <!-- 条件判断 eq 相等 / ne 不相等 /  gt 大于 / lt 小于 / ge 大于等于 / le 小于等于 -->
      {{if ge .price 80}}
       <p>有点贵:{{.price}}</p>
       {{else if lt .price 10}}
       <p>有点便宜:{{.price}}</p>
       {{else}}
       <p>价格:{{.price}}</p>
       {{end}}
go 复制代码
       /*html中传入切片,模版循环遍历数据*/
		r.GET("/html", func(c *gin.Context) {
		c.HTML(http.StatusOK, "goods.html", gin.H{
			"code":  "200",
			"hobby": []string{"小米", "SU7", "YU7"},
		  })
	   })


	 <!-- 循环遍历数据 -->
     {{range $key,$value := .hobby}}
      <li>{{$key}}---{{$value}}</li>
       {{else}}
      <p>没有数据</p>
      {{end}}
相关推荐
阳光_你好1 小时前
简单介绍C++中线性代数运算库Eigen
开发语言·c++·线性代数
你采不起的野花5 小时前
Go 语言 vs C+Lua(Skynet)游戏服务器方案对比分析
游戏·golang·lua
风逸hhh5 小时前
python打卡day29@浙大疏锦行
开发语言·前端·python
ᖰ・◡・ᖳ5 小时前
JavaScript:PC端特效--缓动动画
开发语言·前端·javascript·css·学习·html5
hy____1235 小时前
C++多态的详细讲解
开发语言·c++
小葡萄20256 小时前
黑马程序员C++2024版笔记 第0章 C++入门
开发语言·c++·笔记
万物此臻6 小时前
C#编写软件添加菜单栏
开发语言·c#
RongSen336 小时前
Python海龟绘图(Turtle Graphics)核心函数和关键要点
开发语言·python
小贾要学习6 小时前
【C语言】贪吃蛇小游戏
c语言·开发语言·游戏
程序员爱钓鱼6 小时前
defer关键字:延迟调用机制-《Go语言实战指南》
开发语言·后端·golang