Gin
Gin 是使用 Go/golang 语言实现的 HTTP Web 框架。接口简洁,性能极高。
Gin 的特征:
- 快速:路由不使用反射,基于Radix树,内存占用少。
- 中间件:HTTP请求,可先经过一系列中间件处理,例如:Logger,Authorization,GZIP等。这个特性和 NodeJs 的
Koa框架很像。中间件机制也极大地提高了框架的可扩展性。 - 异常处理:服务始终可用,不会宕机。Gin 可以捕获 panic,并恢复。而且有极为便利的机制处理HTTP请求过程中发生的错误。
- JSON:Gin可以解析并验证请求的JSON。这个特性对
Restful API的开发尤其有用。 - 路由分组:例如将需要授权和不需要授权的API分组,不同版本的API分组。而且分组可嵌套,且性能不受影响。
- 渲染内置:原生支持JSON,XML和HTML的渲染。
第一个Main函数
package main
import "github.com/gin-gonic/gin"
func main() {
r := gin.Default()
r.GET("/", func(c *gin.Context) {
c.String(200, "Hello, Geektutu")
})
r.Run() //r.Run(":9090")
}
使用了gin.Default()生成了一个实例,这个实例即 WSGI 应用程序
r.Get("/", ...)声明了一个路由
r.Run()函数来让应用运行在本地服务器上,默认监听端口是 8080,也可以修改为合适的,譬如9090
路由
Restful风格的API,是一种互联网应用程序的API设计理念:URL定位资源,用HTTP描述操作
1.获取文章 /blog/getXxx GET blog/Xxx
2.添加 /blog/addXxx POST blog/Xxx
3.修改 /blog/updateXxx PUT blog/Xxx
4.删除 /blog/delXxxx DELETE blog/Xxx
可以通过Context的Param方法来获取API参数,可以通过DefaultQuery()或Query()方法获取,表单参数可以通过PostForm()方法获取
multipart/form-data格式用于文件上传,gin把原生的request封装到c.Request中
routes group
routes group是为了管理一些相同的URL
相当于:localhost:8080/v2/login/
路由注册
设计复杂的程序的时候,不能把路由注册放在main函数里面,需要单独放在一个在routers.go文件中定义并注册路由信息,便于管理;注意在一些场景下,函数首字母需要大写。
我们也可以在项目目录下单独定义一个app目录,用来存放我们不同业务线的代码文件,这样就很容易进行横向扩展
gin 数据解析和绑定
三种方式:
- Json 数据解析和绑定 \
- 表单数据解析和绑定 \
- URI数据解析和绑定
结构体成员加了第三个位置的标签,在转换指定类型时,key 会使用指定的名字。
Json 数据解析和绑定:
表单数据解析和绑定:
URI数据解析和绑定:
这是我参与「第五届青训营 」笔记创作活动的第6天.