初识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,可以改括号后面的字段来显示其他内容