Gin框架基础学习笔记整理

本文章用于记录学习过程中的重点,以防以后忘记,有个可以记忆的地方。
内容参考于Gin框架介绍及使用|李文周的博客 ,博客里有许多关于Golang的学习点,挺不错的。
以及对应的视频【最新Go Web开发教程】基于gin框架和gorm的web开发实战 (七米出品)

安装

使用go mod来创建项目时,注意项目不要放在GOPATH下。

go get -u github.com/gin-gonic/gin

渲染

HTML渲染

Gin框架中使用LoadHTMLGlob()或者LoadHTMLFiles()方法进行HTML模板渲染。

func main() {
   
	r := gin.Default() //Default返回一个默认的路由引擎
	r.LoadHTMLGlob("templates/**/*") // 渲染多个页面,不指定文件
	//r.LoadHTMLFiles("templates/posts/index.html", "templates/users/index.html")// 单个渲染
	r.GET("/index", func(c *gin.Context) {
   	// r.GET第一个参数为路由,第二个为执行的方法。
		// C.HTML第一个参数返回状态码,第二个为模板文件。第三个为返回的数据。
		c.HTML(http.StatusOK, "index.html", gin.H{
   
			"title": "posts/index", 	// 返回map对象
		})
	})
	r.Run(":8080")
}

静态文件

当我们渲染的HTML文件中引用了静态文件时,我们只需要按照以下方式在渲染页面前调用gin.Static方法即可。

func main() {
   
	r := gin.Default()
	r.Static("/static", "./static")
	r.LoadHTMLGlob("templates/**/*")
   // ...
	r.Run(":8080")
}

补充文件路径处理

关于模板文件和静态文件的路径,我们需要根据公司/项目的要求进行设置。可以使用下面的函数获取当前执行程序的路径。

func getCurrentPath() string {
   
	if ex, err := os.Executable(); err == nil {
   
		return filepath.Dir(ex)
	}
	return "./"
}

JSON渲染

使用.JSON()方法,返回json数据

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

	// gin.H 是map[string]interface{}的缩写
	r.GET("/someJSON", func(c *gin.Context) {
   
		// 方式一:自己拼接JSON
		c.JSON(http.StatusOK, gin.H{
   "message": "Hello world!"})
	})
	r.GET("/moreJSON", func(c *gin.Context) {
   
		// 方法二:使用结构体
		var msg struct {
   
			Name    string `json:"user"`
			Message string
			Age     int
		}
		msg.Name = "小王子"
		msg.Message = "Hello world!"
		msg.Age = 18
		c.JSON(http.StatusOK, msg)
	})
	r.Run(":8080")
}

获取参数

获取querystring参数

querystring指的是URL中?后面携带的参数,例如:/user/search?username=admin&address=xxx
获取请求的querystring参数的方法如下:

func main() {
   
	//Default返回一个默认的路由引擎
	r := gin.Default()
	r.GET("/user/search", func(c *gin.Context) {
   
		username := c.DefaultQuery("username", "默认值") 	//当参数不存在的时候,提供一个默认值
		//username := c.Query("username")	// 正常获取参数,不存在时提供空值
		address := c.Query("address")
		//输出json结果给调用方
		c.JSON(http.StatusOK, gin.H{
   
			"message":  "ok",
			"username": username,
			"address":  address,
		})
	})
	r.Run()
}

获取form参数

请求的数据通过form表单来提交,例如向/user/search发送一个POST请求,获取请求数据的方式如下:

func main() {
   
	//Default返回一个默认的路由引擎
	r := gin.Default()
	r.POST("/user/search", func(c *gin.Context) {
   
		// DefaultPostForm取不到值时会返回指定的默认值
		//username := c.DefaultPostForm("username", "默认值")
		username := c.PostForm("username") // 没有则返回空值
		address := c.PostForm(
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值