目录
一、安装
一、安装
1.在Goland控制台上输入以下语句安装gin
1 | go get -u github.com/gin-gonic/gin |
如果出现网络错误,就分别执行下述语句后再重新安装
1 | # 设置goproxy.io代理 |
示例
1.基础网页demo
1 | package main |
- router := gin.Default()声明并创建名为router的路由
- router.GET(“/get”, func(c *gin.Context) {
})是访问触发时,c.JSON()返回一个状态码是200(200等价于http.StatusOK),响应内容是一个JSON格式字符串的响应c.JSON(200, gin.H{"message": "use get method"})
- “.GET”表示用GET方式来处理访问”/get”的请求
- func(c *gin.Context) {
c.JSON(200, gin.H{“message”: “use get method”})
}执行函数gin.Context,其内封装了request和response,其中c是变量名可以随意更改- 注意gin.H的H是一个map结构,不是结构体
2.不同的http请求格式示例
1 | router := gin.Default() |
3.切换输出的格式
1 | router.GET("/json", func(c *gin.Context) { |
4.获取url路径中的参数
- 定义,:name即表示把出现在这个位置的字符赋值给name属性,最后用c.Params读取
1
2
3router.GET("/user/:name/:age/:addr/:sex", func(c *gin.Context) {
c.JSON(200, fmt.Sprintln(c.Params))
}) - 使用
1
2
3
4//若输入的url为http://localhost:8080/user/jane/20/beijing/female?id=999&height=170&wigth=100
//输出
"[{name jane} {age 20} {addr beijing} {sex female}]\n" - 获取某个指定值的写法
1
2
3
4router.GET("/user/:name/:age/:addr/:sex", func(c *gin.Context) {
age := c.Param("age")
c.JSON(200, age)
})
5.获取url请求中的参数
- 定义
1
2
3
4
5
6router.GET("/user/:name/:age/:addr/:sex", func(c *gin.Context) {
id := c.Query("id")
height := c.Query("height")
wight := c.Query("wight")
c.JSON(200, gin.H("height": height, "id": id, "wight": wight)}
}) - 使用
1
2
3
4//若输入的url为http://localhost:8080/user/jane/20/beijing/female?id=999&height=170&wigth=100
//输出
{"height":"170","id":"999","wight":"100"}
6.输出html文件
- 路由写法
1
2
3
4
5
6
7
8
9
10
11
12
13
14package main
import (
"github.com/gin-gonic/gin"
)
func main() {
router := gin.Default()
router.LoadHTMLGlob("tem/*")
router.GET("/index", func(c *gin.Context) {
c.HTML(200, "index.html", gin.H{"title": "测试", "ce": "123456"})
})
router.Run()
} - 根目录\tmp\index.html写法
1
2
3
4
5
6
7
8
9
10
11
12<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>{{.title}}</title>
</head>
<body>
fgkjdskjdsh{{.ce}}
</body>
</html> - 最终会在localhost:8080/index渲染成以下网页
1
2
3
4
5
6
7
8
9
10
11
12<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>测试</title>
</head>
<body>
fgkjdskjdsh123456
</body>
</html>
7.访问不同路径时的分离函数写法,下述代码无论是访问/demo、/test还是/aaaa都会去执行response,这种写法比之前的简简洁多
1 | func response(c *gin.Context) { |
8.gin的前后端交互写法(以接受token为例)
- 前端
1
2
3
4
5
6
7
8<script src="https://cdn.dingxiang-inc.com/fe/common/jquery/1.9.1/jquery.min.js"></script>
$.ajax({
type:"GET",
url:"http://127.0.0.1:8080/index/bar",
dataType:"text",
data: { token: token}
}); - 后端
1
2
3
4
5
6
7
8
9func main(){
router := gin.Default()
router.GET("/index/bar", response)
}
func response(c *gin.Context){
token := c.Query("token") //从这里之后就可以用token的值了,注意是string类型
.....
}
9.测试时,显示字符串用法
1 | func response(c *gin.Context){ |