gin | 青训营笔记

137 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 4 天

安装Gin框架

安装Gin框架

$ go get -u github.com/gin-gonic/gin

创建Engine

在gin框架中,Engine实现了IRouter接口,其中定义了HTTP方法 Engine两种创建方式如下所示

engine1 = gin.Default()
engine2 = gin.New()

New和Default方法,两者的区别是Default方法在调用New()的基础上使用默认Logger和 Recovery自带中间件的处理。

运行Engine

engine1.Run([主机地址:端口号])
// 不带参数,默认主机地址为localhost,默认端口为8080
engine1.Run()
// 带参数,主机地址为apphost,端口为8081
engine1.Run("apphost:8081")

HTTP请求

因为在项目开发中,通常都是遵循RESTful标准进行接口开发

http协议中一共定义了八种方法或者称之为类型来表明对请求网络资源(Request-URI)的不同的操作方式,分别是:OPTIONS、HEAD、GET、POST、PUT、DELETE、TRACE、CONNECT。

在engine中使用Handle方法进行http请求的处理。Handle方法包含三个参数,具体如下所示:

func (group *RouterGroup) Handle(httpMethod, relativePath string, handlers ...HandlerFunc) IRoutes

httpMethod:第一个参数表示要处理的HTTP的请求类型,是GET、POST、DELETE等8种请求类型中的一种。

relativePath:第二个参数表示要解析的接口,由开发者进行定义。

handlers:第三个参数是处理对应的请求的代码的定义。

Context

Context是gin框架中封装的一个结构体,该结构体可以提供我们操作请求,处理请求,获取数据等相关的操作,通常称之为上下文对象,简单说为我们提供操作环境。

可以通过 context.Querycontext.DefaultQuery获取GET请求携带的参数。

可以通过context.Writer.Write向请求发起端返回数据。

Get实例

// 通过Handle方法第一个参数指定处理GET类型的请求,解析的接口是/hello
// url:http://localhost:8080/hello?name=xxx
// GET请求附带的参数在url中的?后面
engine.Handle("GET", "/hello", func(context *gin.Context) {
    // 获取请求接口,context.FullPath()返回请求接口地址("/hello")
    fmt.Println(context.FullPath())
    // 获取字符串参数,读取GET请求附带的参数。**第一个参数指定要读取的参数的键值key,第二个参数是若读取不到要返回的默认字符串
    name := context.DefaultQuery("name", "")
    // 返回给前端输出
    context.Writer.Write([]byte("Hello ," + name))
}) 

POST实例

// 通过Handle方法第一个参数指定处理POST类型的请求,解析的接口是/login
// url:http://localhost:8080/login
engine.Handle("POST", "/login", func(context *gin.Context) {

    fmt.Println(context.FullPath())
    // 读取用户名
    username := context.PostForm("username")
    fmt.Println(username)

    // 读取用户密码
    password := context.PostForm("pwd")
    fmt.Println(password)

    context.Writer.Write([]byte("User login"))
})

直接通过参数指定的键名进行读取