Go语言Gin框架基础入门 | 青训营

74 阅读3分钟

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。

3.5、路由拆分与注册