当前位置: 首页 > news >正文

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

文章目录

  • 一、安装gin包和热加载包
  • 二、路由简单场景总结


一、安装gin包和热加载包

  1. 首先终端新建一个main.go
  2. 然后go mod init ‘项目名称’
  3. 执行以下命令 安装gin包
go get -u github.com/gin-gonic/gin
  1. 终端安装热加载包
go get github.com/pilu/fresh
  1. 终端输入fresh 运行 ,之后文件的改动,项目自动重新热加载
fresh
  1. 简单示例代码
package mainimport ("github.com/gin-gonic/gin"
)
func main (){r := gin.Default() // 创建一个路由引擎// 配置路由r.GET("/", func(c *gin.Context) {c.String(200, "你好,gin")})
}

二、路由简单场景总结

  1. 返回string数据
    /*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数据
  r.GET("/json", func(c *gin.Context) {//gin.H是 map[string]interface{} 的类型别名:用于快速创建键值对形式JSONc.JSON(http.StatusOK, gin.H{"code": 200,"data": gin.H{"name": "张三","age":  18,},})})
  1. 返回结构体
	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{} 的类型别名:用于快速创建键值对形式JSONc.JSON(http.StatusOK, gin.H{"code": 200,"data": a,})})
  1. jsonp返回
   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{} 的类型别名:用于快速创建键值对形式JSONc.JSONP(http.StatusOK, gin.H{"code": 200,"data": a,})})
  1. 返回XML
  r.GET("/xml", func(c *gin.Context) {c.XML(http.StatusOK, gin.H{"code":  200,"title": "小米SU7",})})
  1. 返回模版 html
   	/*向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>
   /*向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}}
	/*向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}}
       /*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}}

相关文章:

  • 【架构美学】Java 访问者模式:解构数据与操作的双重分发哲学
  • tauri2项目使用sidcar嵌入可执行文件并使用命令行调用
  • [SpringBoot]Spring MVC(4.0)
  • elementUI 单选框存在多个互斥的选项中选择的场景
  • mongodb管理工具的使用
  • Selenium-Java版(css表达式)
  • 整理了 2009 - 2025 年的【199 管综真题 + 解析】PDF,全套共 34 份文件
  • Linux 安装 Unreal Engine
  • npm与pnpm--为什么推荐pnpm
  • DeepSeek系列大语言模型推理优化技术深度解析
  • 字符串相乘(43)
  • 程序代码篇---python向http界面发送数据
  • el-dialog鼠标在遮罩层松开会意外关闭,教程图文并茂
  • 【技海登峰】Kafka漫谈系列(十一)SpringBoot整合Kafka之消费者Consumer
  • 【自然语言处理与大模型】向量数据库:Chroma使用指南
  • 医疗信息系统安全防护体系的深度构建与理论实践融合
  • 什么是 Flink Pattern
  • PDF批量合并拆分+加水印转换 编辑 加密 OCR 识别
  • C语言链表的操作
  • Office 中 VBE 的共同特点与区别
  • 4月份国民经济顶住压力稳定增长
  • 中国旅游日|上天当个“显眼包”!低空经济的“飞”凡魅力
  • 中美博弈新阶段,这个“热带中国”火了
  • 陕西:未来一周高温持续,继续发布冬小麦干热风风险预警
  • 多图|多款先进预警机亮相雷达展,专家:中国预警机已达世界先进水平
  • 柬埔寨果农:期待柬埔寨榴莲走进中国市场