gin框架使用
参考文档:
Gin 是一个用 Go 语言编写的 web 微框架,封装比较优雅,API 友好,具有快速灵活,容错方便等特点。它是一个类似于 martini 但拥有更好性能的 API 框架,由于使用了 httpprouter,速度提高了近 40 倍。如果你是性能和高效的追求者,你会爱上 Gin。
Go 世界里最流行的 Web 框架,Github 上有 46k+star。基于 httprouter 开发的 Web 框架。中文文档齐全,简单易用的轻量级框架。
go get -u github.com/gin-gonic/gin
import "github.com/gin-gonic/gin"
package api
import (
"github.com/gin-gonic/gin"
)
func RouterStart() {
// 创建一个路由引擎
router := gin.New()
// 创建一个默认的路由引擎
router := gin.Default()
// GET:请求方式;/hello:请求的路径
// 当客户端以GET方法请求/hello路径时,会执行后面的匿名函数
// gin.Context封装了Request和Response
r.GET("/hello", func(c *gin.Context) {
// c.JSON:返回JSON格式的数据
c.JSON(200, gin.H{
"message": "Hello world!",
})
})
// 启动HTTP服务,默认在0.0.0.0:8080启动服务
r.Run()
}
gin.SetMode(gin.ReleaseMode)
查看gin源码,可发现gin框架提供了下列三种模式。
const (
// DebugMode indicates gin mode is debug.
DebugMode = "debug"
// ReleaseMode indicates gin mode is release.
ReleaseMode = "release"
// TestMode indicates gin mode is test.
TestMode = "test"
)
我们每次启动gin框架,如果不设置以下gin模式
gin.SetMode(gin.ReleaseMode)
程序则会输出一段提示
[WARNING] Running in "debug" mode. Switch to "release" mode in production.
- using env: export GIN_MODE=release
- using code: gin.SetMode(gin.ReleaseMode)
所以,现在我们就可以明白了,这三种mode分别对应了不同的场景。在我们开发调试过程中,使用debug模式就可以了。在上线的时候,一定要选择release模式。而test可以用在测试场景中。
//创建一个路由引擎
router := gin.New()
// 创建一个默认的路由引擎
router := gin.Default()
gin.Default() 和 gin.New() 的区别在于 gin.Default() 也使用 gin.New() 创建engine实例,但是会默认使用 Logger 和 Recovery 中间件。
chain := router.Group("/api/admin")
我们把一个模块相关的方法都写在一个路由下。便于管理和查找相关的代码。 Gin框架正好为我们提供了这个方法。
代码举例如下
//v1组路由
v1:=router.Group("/v1")
{
v1.GET("/login", loginEndpoint)
v1.GET("/submit", submitEndpoint)
v1.GET("/read", readEndpoint)
}
//v2组路由
v2:=router.Group("/v2")
{
v2.GET("/login", loginEndpoint)
v2.GET("/submit", submitEndpoint)
v2.GET("/read", readEndpoint)
}
// 新增banner
chain.POST("/banner/add", handler.AddBanner)
当客户端以POST方法请求.../banner/add 路径时,会执行后面的函数
func AddBanner(ctx *gin.Context)
Web服务器收到客户端的http请求,会针对每一次请求,分别创建一个用于代表请求的request对象、和代表响应的response对象。
故:当需要获取客户机提交过来的数据时,找request对象就行了。 当需要向客户机输出数据,找response对象。
router.Run(config.Conf.Console.Port)
默认在0.0.0.0:8080启动服务
本系列文章: 从零开发区块链应用(一)--golang配置文件管理工具viper 从零开发区块链应用(二)--mysql安装及数据库表的安装创建 从零开发区块链应用(三)--mysql初始化及gorm框架使用 从零开发区块链应用(四)--自定义业务错误信息 从零开发区块链应用(五)--golang网络请求 从零开发区块链应用(六)--gin框架使用 从零开发区块链应用(七)--gin框架参数获取 从零开发区块链应用(八)--结构体初识 从零开发区块链应用(九)--区块链结构体创建 从零开发区块链应用(十)--golang协程使用 从零开发区块链应用(十一)--以太坊地址生成 从零开发区块链应用(十二)--以太坊余额查询 从零开发区块链应用(十三)--以太坊区块查询 从零开发区块链应用(十四)--以太坊交易哈希查询 从零开发区块链应用(十五)--以太坊交易匹配查询 从零开发区块链应用(十六)--ETH转账处理
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!