涉猎gin框架|青训营

60 阅读3分钟

初识Gin框架20:45

Go的Web框架分两派:

 

一派是基于标准库net/http的,比如 gin-gonic/gin,labstack/echo,astaxie/beego

一派是基于valyala/fasthttp的,更偏向于性能,比如 kataras/ iris , gofiber/fiber

Gin框架获取:go get -u github.com/gin-gonic/gin

 

路由

路由(route)就是根据 HTTP 请求的 url 路径,设置由哪个函数来处理请求。路由是 web 框架的核心功能。Gin 的路由支持 HTTP 的 GET , POST , PUT , DELETE , PATCH , HEAD , OPTIONS 方法的请求,同时还有一个 Any 函数,可以同时支持以上的所有请求。

路由的实现,通过“/”将路由构造为树形结构,比如一个账户有用户名,密码,性别等信息,我们就可以这样设计路由树

/account/username

/account/password

/account/sex

这样就创建了一个4节点路由树根节点为account,叶节点为username,password,sex

Gin 的路由支持 HTTP 的 GET, POST, PUT, DELETE, PATCH, HEAD, OPTIONS 方法的请求,同时还有一个 Any 函数,可以同时支持以上的所有请求。

API

web 应用程序,一般分为前端和后端两个部分。前后端通常需要一种统一的通信机制,方便不同的前端设备与后端进行通信。这导致API构架的流行,甚至出现"API First"的设计思想。RESTful API是目前比较成熟的一套互联网应用程序的 API 设计理论。gin 框架支持 RESTful 风格的 API。

API的HTTP动词

在 RESTful API 设计理论中,对于资源的操作,由 HTTP 动词表示。

常用的 HTTP 动词有下面五个(括号里是对应的数据库 SQL 命令)。

GET(SELECT):从服务器取出资源(一项或多项)。

POST(CREATE):在服务器新建一个资源。

PUT(UPDATE):在服务器更新资源(客户端提供改变后的完整资源)。

PATCH(UPDATE):在服务器更新资源(客户端提供改变的属性)。

DELETE(DELETE):从服务器删除资源。

还有两个不常用的HTTP动词。

HEAD:获取资源的元数据。

OPTIONS:获取信息,关于资源的哪些属性是客户端可以改变的。

 

GET/account  获取全部账号

GET/account/username 获取全部用户名

POST/account 新建一个账户

PUT/account/username/bailu 更改用户名为bailu的账户

DELETE/account/username/zhangsan 删除zhansan的账户

参数

web 程序中经常需要处理各种形式的参数,参数是处理 HTTP 请求中很重要的工作,它是前端提交数据的基本形式。gin 框架内置了处理 HTTP 各种参数的方法,包括 API 参数,URL 参数以及表单参数的处理。

通过context的Param方法来获取API参数

n:=context.Param(“name”)

将name的属性值赋值到n

Context是gin.Context类型的指针

c.string(http.StatusOK,values)在网页上显示values对应的内容

变量 =  c.DefaultQuery(“默认值”,”需要显示的值”)用于获取URL参数,参数不存在返回第一个值,存在返回第二个值

与之对应有Query()与上一个函数不一样的在于在参数不存在时返回空串

`package main

import (
"fmt"
"net/http"
"github.com/gin-gonic/gin"
)

func main() {
engine := gin.Default()
engine.GET("/user", func(c *gin.Context) {
name := c.DefaultQuery("name", "no user")
c.String(http.StatusOK, fmt.Sprintf("name=%s", name))
})
engine.Run()
}

`

代码示例

上述代码在访问http://localhost:8080/user?name=zhangsan浏览器显示name=zhangsan,可以改括号后面的字段来显示其他内容