当前位置: 首页 > 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}}
http://www.dtcms.com/a/197536.html

相关文章:

  • 【架构美学】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 的共同特点与区别
  • 【C++】unordered_map与set的模拟实现
  • Atcoder Beginner Contest 406
  • 【基于Spring Boot 的图书购买系统】深度讲解 用户注册的前后端交互,Mapper操作MySQL数据库进行用户持久化
  • 程序代码篇---数据包解析
  • 层次原理图
  • Android开发——原生渲染方案实现 PDF 预览功能
  • Elasticsearch 初步认识
  • C++控制结构详解:if-else、switch、循环(for/while/do-while)
  • MySQL事务的一些奇奇怪怪知识
  • React-Query使用react-testing-library进行测试