📦 Go1.22.5
、Gin1.10.0
🏆 Gin
⭐️ Gin
是一个用 Go (Golang)
编写的 Web
框架。 它具有类似 martini
的 API
,性能要好得多,多亏了 httprouter
,速度提高了 40
倍。 如果您需要性能和良好的生产力,您一定会喜欢 Gin
。Gin
相比于 Iris
和 Beego
而言,更倾向于轻量化的框架,只负责 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️⃣ 打开浏览器访问
⭐️ 会发现他这个方法和原生的 Http
包下的几乎差不多,在 GET
中的 func
是可以提取出来了的
🌟 其他请求方法
⭐️ 上面已经介绍过了它的 GET
请求方法,当然它还封装了一些其他的方法比如 POST
、DELETE
等等
这里的源代码是不是看的很熟悉和 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
定义方法一样,接收一个 relativePath
和 handlers
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",
})
}