Gin框架简单入门(一) | 青训营

186 阅读2分钟

0.简要介绍

Gin框架是go语言的一款简单,快速的框架,开箱即用,十分方便 以下是Gin框架的优势

  • 快速:路由速度快,内存占用少
  • 中间件:HTTP请求可以经过一系列中间件的处理
  • 异常处理:服务始终可用不会宕机
  • JSON:可以解析并验证请求的JSON,对于RESTful API的开发很有用
  • 路由分组:将需要授权和不需要授权的API分组
  • 渲染内置:原生支持JSON,XML,HTML渲染

1.基本配置

首要问题是配置go的代理

# 注意需要加上引号
# 设置goproxy.io代理
go env -w GOPROXY="https://goproxy.io"
# 设置GO111MOUDLE
go env -w GO111MODULE="on"

然后安装gin框架

go get github.com/gin-gonic/gin

到这个文件夹下即可找到gin框架 Pasted image 20230727092750.png

如果安装gin框架失败,可以在goland中尝试安装

2.简要入门

安装完成之后进行测试

package main  
//导包
import (  
"github.com/gin-gonic/gin"  
"net/http"  
)  
  
func main() {  
r := gin.Default()  
r.GET("/hello", func(c *gin.Context) {  
c.JSON(http.StatusOK, gin.H{  
"message": "快速入门",  
})  
})  
r.Run(":8888")  //打开8888端口(如果没有这句话则默认打开8080端口)
}

此时在浏览器中即可访问

Pasted image 20230727094156.png

3.RESTful API

Representational State Transfer 表征状态转移/表现层状态转化

其含义就是客户端与web服务器进行通信交互的时候,使用HTTP协议的4个请求方法代表的不同动作

  • GET获取资源
  • POST新建资源
  • PUT更新资源
  • DELETE删除资源
package main  
  
import (  
"github.com/gin-gonic/gin"  
"net/http"  
)  
  
func main() {  
r := gin.Default()  
r.GET("/info", func(c *gin.Context) {  
c.JSON(http.StatusOK, gin.H{  
"message": "获取信息",  
})  
})  
r.POST("/create", func(c *gin.Context) {  
c.JSON(http.StatusOK, gin.H{  
"message": "创建信息",  
})  
})  
r.PUT("/update", func(c *gin.Context) {  
c.JSON(http.StatusOK, gin.H{  
"message": "更新信息",  
})  
})  
r.DELETE("/delete", func(c *gin.Context) {  
c.JSON(http.StatusOK, gin.H{  
"message": "删除信息",  
})  
})  
r.Run(":8888")  
}

浏览器访问127.0.0.0:8888 然后按f12打开开发者选项 找到网络控制台 分别测试4种状态

  • GET Pasted image 20230727100157.png
  • POST Pasted image 20230727100253.png
  • PUT Pasted image 20230727100311.png
  • DELETE

Pasted image 20230727100326.png

4.渲染HTML

新建项目 新建templates文件夹 在这个文件夹之下新建index.html文件

<!DOCTYPE html>  
<html lang="en">  
<head>  
<meta charset="UTF-8">  
<title>Document</title>  
</head>  
<body>  
<h1>  
账号:{{.name}}  
</h1>  
<h1>  
密码:{{.pwd}}  
</h1>  
</body>  
</html>

新建main.go

package main  
  
import (  
"github.com/gin-gonic/gin"  
"net/http"  
)  
  
func main() {  
	r := gin.Default()
	r.LoadHTMLGlob("./templates/*")  
	r.GET("/demo", func(c *gin.Context) {  
	c.HTML(http.StatusOK, "index.html", gin.H{  
		"name": "admin",  
		"pwd": "123321",  
	})  
})  
	r.Run(":8888")  
}

渲染完之前的html页面是 Pasted image 20230727101130.png 渲染完之后的html页面是 Pasted image 20230727101146.png

5.Gin路由(Route)

路由就是在任何网络中选择路径的过程 路由方法有GET,POST,PUT,PATCH,DELETE,OPTIONS还有ANY 无参数GET 就是显示在首页的信息 比如显示127.0.0.1:8888的信息

r.GET("/",func(c *gin.Context*){
	c.String(http.StatusOK,"Who are you?")
})

获取Query参数

// 匹配users?name=xxx&role=xxx,role可选  
r.GET("/users", func(c *gin.Context) {  
	name := c.Query("name")  
	role := c.DefaultQuery("role", "teacher")  
	c.String(http.StatusOK, "%s is a %s", name, role)  
})

结果

Tom is a student