0、综述
框架就是别人写好的代码我们可以直接使用,这个代码是专门针对一个开发方向定制的。例如,我们要做一个网站,利用框架就能非常块的完成网站的开发,如果没有框架,每个细节都需要我们处理,开发时间会大大降低。Go语言常见的web框架有beego,gin,echo,iris等等。
Gin是使用 Go/golang 语言实现的 HTTP Web 框架。接口简洁,性能极高。截止 1.4.0 版本,包含测试代码,仅14K,其中测试代码9K左右,也就是说框架源码仅5K左右。
Gin的特性:
- 快速:路由不使用反射,基于Radix树,内存占用少。
- 中间件:HTTP请求,可先经过一系列中间件处理,例如:Logger,Authorization,GZIP等。这个特性和 NodeJs 的 Koa 框架很像。中间件机制也极大地提高了框架的可扩展性。
- 异常处理:服务始终可用,不会宕机。Gin 可以捕获 panic,并恢复。而且有极为便利的机制处理HTTP请求过程中发生的错误。
- JSON:Gin可以解析并验证请求的JSON。这个特性对Restful API的开发尤其有用。
- 路由分组:例如将需要授权和不需要授权的API分组,不同版本的API分组。而且分组可嵌套,且性能不受影响。
- 渲染内置:原生支持JSON,XML和HTML的渲染。
1、Gin的安装
配置好Go后,执行go get -u -v github.com/gin-gonic/gin即可完成安装。
2、第一个程序 Hello World!
2.1、代码
package main
import (
"github.com/gin-gonic/gin"
"net/http"
)
func main() {
//1.创建路由
r := gin.Default()
//2.绑定路由规则,执行的函数
r.GET("/", func(context *gin.Context) {
context.String(http.StatusOK, "Hello World!")
})
//3.监听端口,默认8080
r.Run(":8080")
}
2.2、检验
编译运行,项目会自动下载gin依赖。在浏览器输入 http://127.0.0.1:8080 ,页面出现Hello World!即成功。
3、Gin的路由
gin 框架中采用的路由库是基于httprouter做的。
路由方法有 GET, POST, PUT, PATCH, DELETE 和 OPTIONS,还有 Any ,可匹配以上任意类型的请求。
3.1、Restful风格的API
- gin支持Restful风格的API
- 即Representational State Transfer的缩写。直接翻译的意思是"表现层状态转化",是一种互联网应用程序的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
3.2、参数
3.2.1、API参数
可以通过Context的Param方法获取API参数。
3.2.2、 URL参数
URL参数可以通过DefaultQuery()或Query()方法获取。DefaultQuery()若参数不存在,则返回默认值,Query()若不存在,返回空串。
3.2.3、表单参数
- 表单传输为post请求,http常见的传输格式为四种:
- application/json
- application/x-www-form-urlencoded
- application/xml
- multipart/form-data
- 表单参数可以通过PostForm()方法获取,该方法默认解析的是x-www-form-urlencoded或from-data格式的参数
3.3、(单)文件上传
- multipart/form-data格式用于文件上传
- gin文件上传与原生的net/http方法类似,不同在于gin把原生的request封装到c.Request中
3.4、routes group
routes group是为了管理一些相同的URL。