📦 Go1.22.5Gin1.10.0

🏆 Gin

⭐️ Gin 是一个用 Go (Golang) 编写的 Web 框架。 它具有类似 martiniAPI,性能要好得多,多亏了 httprouter,速度提高了 40 倍。 如果您需要性能和良好的生产力,您一定会喜欢 GinGin相比于 IrisBeego而言,更倾向于轻量化的框架,只负责 Web部分,追求极致的路由性能,功能或许没那么全,胜在轻量易拓展,这也是它的优点。因此,在所有的 Web框架中,Gin是最容易上手和学习的

🌟 第一个代码

⭐️ IDE我选择的 Goland,创建项目之后(查看是否有 go.mod,如果没有需要自己使用 go mod init 生成),使用下面步骤安装

1️⃣ 在命令行中执行,获取到gin

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

2️⃣ 编写代码

package main

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

func main() {
	//创建ginserver服务
	r := gin.Default()

	//访问地址
	r.GET("/", func(context *gin.Context) {
		//返回一个字符串
		context.String(200, "这是我的第一个GIN项目")
	})
	//启动服务,默认是8080端口
    r.Run(":8082")
}

3️⃣ 打开浏览器访问

gin

⭐️ 会发现他这个方法和原生的 Http包下的几乎差不多,在 GET中的 func是可以提取出来了的

🌟 其他请求方法

⭐️ 上面已经介绍过了它的 GET请求方法,当然它还封装了一些其他的方法比如 POSTDELETE等等

这里的源代码是不是看的很熟悉和 Http包差不多

// POST is a shortcut for router.Handle("POST", path, handlers).
func (group *RouterGroup) POST(relativePath string, handlers ...HandlerFunc) IRoutes {
	return group.handle(http.MethodPost, relativePath, handlers)
}

// GET is a shortcut for router.Handle("GET", path, handlers).
func (group *RouterGroup) GET(relativePath string, handlers ...HandlerFunc) IRoutes {
	return group.handle(http.MethodGet, relativePath, handlers)
}

// DELETE is a shortcut for router.Handle("DELETE", path, handlers).
func (group *RouterGroup) DELETE(relativePath string, handlers ...HandlerFunc) IRoutes {
	return group.handle(http.MethodDelete, relativePath, handlers)
}

// PATCH is a shortcut for router.Handle("PATCH", path, handlers).
func (group *RouterGroup) PATCH(relativePath string, handlers ...HandlerFunc) IRoutes {
	return group.handle(http.MethodPatch, relativePath, handlers)
}

// PUT is a shortcut for router.Handle("PUT", path, handlers).
func (group *RouterGroup) PUT(relativePath string, handlers ...HandlerFunc) IRoutes {
	return group.handle(http.MethodPut, relativePath, handlers)
}

// OPTIONS is a shortcut for router.Handle("OPTIONS", path, handlers).
func (group *RouterGroup) OPTIONS(relativePath string, handlers ...HandlerFunc) IRoutes {
	return group.handle(http.MethodOptions, relativePath, handlers)
}

// HEAD is a shortcut for router.Handle("HEAD", path, handlers).
func (group *RouterGroup) HEAD(relativePath string, handlers ...HandlerFunc) IRoutes {
	return group.handle(http.MethodHead, relativePath, handlers)
}

1️⃣ Post

Get定义方法一样,接收一个 relativePathhandlers

	r.POST("/somePost", func(context *gin.Context) {
		context.JSON(200, gin.H{
			"message": "somPost",
		})
	})

这里的 handlers是可以提取出来的,比如下面这段代码,将 handler提取出来

package main

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

func main() {
	//创建ginserver服务
	r := gin.Default()

	//访问地址
	r.GET("/someGet", someGet())

	r.POST("/somePost", somePost())
	//启动服务,默认是8080端口
	r.Run(":8082")
}

func someGet(context *gin.Context) {
		//返回一个字符串
		context.String(200, "这是我的第一个GIN项目")
}

func somePost(context *gin.Context) {
	context.JSON(200, gin.H{
		"message": "somPost",
	})
}