go - gin快速入门指引

相关链接

gin文档
gin源码地址

gin最最最简单的一个demo

  1. 创建一个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") 可修改监听的端口
}
  1. 初始化go.modgo mod init [path]

    path可为空

  2. 启动服务器 go run test.go

  3. 访问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)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值