0
点赞
收藏
分享

微信扫一扫

Gin框架学习

穆熙沐 2022-01-31 阅读 67

一.Gin框架的安装

上个星期花了几个小时都搞不定,今天就打算把全部文件都给删掉,重新安装试一下,这次我花了好久从CSDN上找资料,找到一个有详细操作的,于是我跟他的思路走,没想到终于成功了(他里面说不用在GOPATH目录下,可能之前我一直都是在GOPATH目录下工作的原因导致我之前操作错误吧)
解决问题的链接:https://blog.csdn.net/qq_35549286/article/details/115870519?ops_request_misc=&request_id=&biz_id=102&utm_term=%22github.com/gin-gonic/gin@v1.7&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduweb~default-1-115870519.first_rank_v2_pc_rank_v29&spm=1018.2226.3001.4187
代码:

package main

import "github.com/gin-gonic/gin"

func main() {
	engine := gin.Default()
	engine.GET("/", func(context *gin.Context) {
		context.String(200, "hello, gin")
	})
	engine.Run()
}

结果:
在这里插入图片描述

在这里插入图片描述

二.处理http请求

处理http请求有两种方式:
1.Router方式(个人感觉这种比较容易记住)

package main

import (
	"fmt"
	"github.com/gin-gonic/gin"
)

func main() {
	engine := gin.Default()
	engine.GET("/name", func(context *gin.Context) {
		fmt.Println(context.FullPath())
		name := context.Query("name")
		fmt.Println(name)
		context.Writer.Write([]byte("你好," + name))
	})
	engine.POST("/login", func(context *gin.Context) {
		name, exist := context.GetPostForm("username")
		//这里如果有数据username的话,exist为真
		if exist {
			fmt.Println(name)
		}
		password, exist := context.GetPostForm("password")
		if exist {
			fmt.Println(password)
		}
		context.Writer.Write([]byte("你好," + name))
	})
	engine.DELETE("/user/:id", func(context *gin.Context) {
		userID := context.Param("id")
		context.Writer.Write([]byte("delete userID:" + userID))
	})
	engine.Run(":9000")
}

结果:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
2.Handle方式

package main

import (
	"fmt"
	"github.com/gin-gonic/gin"
)

func main() {
	engine := gin.Default()
	//第一个参数表示方式,有:GET,POST等
	engine.Handle("GET", "/name", func(context *gin.Context) {
		fmt.Println(context.FullPath())
		name := context.Query("name")
		fmt.Println(name)
		context.Writer.Write([]byte("你好," + name))
	})
	engine.Handle("POST", "/name", func(context *gin.Context) {
		name := context.PostForm("username")
		password := context.PostForm("password")
		fmt.Println(password)
		context.Writer.Write([]byte("你好啊," + name))
	})
	engine.Run(":9000")
}

结果:
在这里插入图片描述
多数据处理:

package main

import (
	"fmt"
	"github.com/gin-gonic/gin"
	"log"
)

func main() {
	engine := gin.Default()
	engine.GET("/hello", func(context *gin.Context) {
		fmt.Println(context.FullPath())
		var student Student
		err := context.ShouldBindQuery(&student)
		if err != nil {
			log.Fatal(err.Error())
			return
		}
		fmt.Println(student.Name)
		fmt.Println(student.Sex)
		fmt.Println(student.Age)
		context.Writer.Write([]byte("你好:" + student.Name))
	})
	engine.Run()
}

type Student struct {
	Name string `form:"name""`
	Sex  string `form:"sex"`
	Age  int    `form:"age"`
}

结果:
在这里插入图片描述
获取数据:

package main

import (
	"fmt"
	"github.com/gin-gonic/gin"
	"log"
)

func main() {
	engine := gin.Default()
	engine.POST("/name", func(context *gin.Context) {
		fmt.Println(context.FullPath())
		var student Student
		err := context.ShouldBind(&student)
		if err != nil {
			log.Fatal(err.Error())
			return
		}
		fmt.Println(student.Name)
		context.Writer.Write([]byte("你好:" + student.Name + " 手机号码: " + student.Phone))
	})
	engine.Run()
}

type Student struct {
	Name     string `form:"name""`
	Phone    string `form:"phone"`
	Password int    `form:"password"`
}

结果:
在这里插入图片描述
获取json格式的数据:

package main

import (
	"fmt"
	"github.com/gin-gonic/gin"
	"log"
)

func main() {
	engine := gin.Default()
	engine.POST("/json", func(context *gin.Context) {
		fmt.Println(context.FullPath())
		var student Student
		//主要是下面这一行代码
		err := context.BindJSON(&student)
		if err != nil {
			log.Fatal(err.Error())
			return
		}
		fmt.Println(student.Name)
		context.Writer.Write([]byte("你好:" + student.Name + " 手机号码: " + student.Phone))
	})
	engine.Run()
}

type Student struct {
	Name     string `form:"name""`
	Phone    string `form:"phone"`
	Password int    `form:"password"`
}

发送:

{
    "name":"Alice",
    "password":111111,
    "phone":"000000"
}

结果:
在这里插入图片描述

举报

相关推荐

0 条评论