相关链接
gin最最最简单的一个demo
- 创建一个
test.go
文件,并键入以下内容:
package main
import "github.com/gin-gonic/gin"
func main() {
r := gin.Default()
r.GET("/test", func(c *gin.Context) {
c.JSON(200, gin.H{
"message": "success",
})
})
r.Run() // 监听并在 0.0.0.0:8080 上启动服务
// r.Run("1234") 可修改监听的端口
}
-
初始化
go.mod
,go mod init [path]
path可为空
-
启动服务器
go run test.go
-
访问
localhost:8080
几种启动http服务的方式
方式一:
func main() {
router := gin.Default()
router.Run()
}
方式二:
func main() {
router := gin.Default()
http.ListenAndServe(":8080", router)
}
方式三:
func main() {
router := gin.Default()
s := &http.Server{
Addr: ":8080",
Handler: router,
ReadTimeout: 10 * time.Second,
WriteTimeout: 10 * time.Second,
MaxHeaderBytes: 1 << 20,
}
s.ListenAndServe()
}
…此处省略很多很多种能启动http服务的方法
上述几种方法的细节, 可以参考浅谈gin
使用路由
1. 简单路由
func main() {
router := gin.Default()
// 用get访问 localhost:8080/someGet
router.GET("/someGet", getting)
// 用post访问 localhost:8080/somePost
router.POST("/somePost", posting)
// 用put访问 localhost:8080/somePut
router.PUT("/somePut", putting)
// 用delete访问 localhost:8080/someDelete
router.DELETE("/someDelete", deleting)
// 用patch访问 localhost:8080/somePatch
router.PATCH("/somePatch", patching)
// 用head访问 localhost:8080/someHead
router.HEAD("/someHead", head)
// 用options访问 localhost:8080/someOptions
router.OPTIONS("/someOptions", options)
router.Run()
}
2. 简单路由组
func main() {
router := gin.Default()
// 该路由路由前缀为/v1
v1 := router.Group("/v1")
{
// 用post访问 localhost:8080/v1/login
v1.POST("/login", loginEndpoint)
v1.POST("/submit", submitEndpoint)
v1.POST("/read", readEndpoint)
}
// 该路由路由前缀为/v2
v2 := router.Group("/v2")
// 用post访问 localhost:8080/v2/login
v2.POST("/login", loginEndpoint)
v2.POST("/submit", submitEndpoint)
v2.POST("/read", readEndpoint)
router.Run()
}
3. 嵌套路由组
func main() {
router := gin.Default()
// 该路由路由前缀为/v1
v1 := router.Group("/v1")
// v2是v1的子路由组, 前缀为/v2
v2 := v1.Group("/v2")
// 用post访问 localhost:8080/v1/v2/login
v2.POST("/login", loginEndpoint)
router.Run()
}
使用中间件
1.全局中间件
直接使用router.Use()
, 如, gin.Default()方法中的engine.Use(Logger(), Recovery())
, 也可以写成
engine.Use(Logger())
engine.Use(Recovery())
其中,
Use
方法的参数为middleware ...HandlerFunc
, 可添加多个中间件
2.单路由的中间件
router.GET("/test", MyMiddelware(), testMethod)
这里也和全局中间件一样,可以添加多个中间件
3.群组路由的中间件
group1 := router.Group("/v1", MyMiddelware())
或
group1 := router.Group("/v1")
group1.Use(MyMiddelware())
{
group1.POST("/test", testMethod)
}
或
group1 := router.Group("/v1")
group1.Use(MyMiddelware())
group1.POST("/test", testMethod)