Gin
Gin框架介绍
Go世界里最流行的Web框架,Github上有32K+star。 基于httprouter开发的Web框架。 中文文档齐全,简单易用的轻量级框架。
Gin安装与使用
安装
命令行下载就行:
go get -u github.com/gin-gonic/gin
RESTful API
REST是Representational State Transfer的简称,中文翻译为“表征状态转移”或“表现层状态转化”。
REST的含义就是客户端与Web服务器之间进行交互的时候,使用HTTP协议中的4个请求方法代表不同的动作。
- GET用来获取资源
- POST用来新建资源
- PUT用来更新资源
- DELETE用来删除资源。
只要API程序遵循了REST风格,那就可以称其为RESTful API。目前在前后端分离的架构中,前后端基本都是通过RESTful API来进行交互。
在开发RESTful API的时候通常使用Postman来作为客户端的测试工具,大概就是模拟各种请求,以及方便发请求收响应。
Gin渲染
Gin支持:
- HTML渲染
- 自定义模板渲染
- 静态文件处理
- 使用模板继承
- 补充文件路径处理
- JSON渲染
- XML渲染
- YAML渲染
- protobuf渲染
Gin获取参数
参数包括:
- 获取querystring参数
- 获取form参数
- 获取JSON参数
- 获取path参数
- 参数绑定
Gin文件上传
支持:
- 单文件上传
- 多文件上传
注意文件格式以及文件大小。
Gin重定向
- HTTP重定向
- 路由重定向
Gin路由与路由组
Web服务可能会对不同路由有不同响应,一个好的方式就是路由分组。Gin支持路由,也支持路由组。
Gin框架中的路由使用的是httprouter这个库。
其基本原理就是构造一个路由地址的前缀树。
Gin中间件
Gin框架允许开发者在处理请求的过程中,加入用户自己的钩子(Hook)函数。这个钩子函数就叫中间件,中间件适合处理一些公共的业务逻辑,比如登录认证、权限校验、数据分页、记录日志、耗时统计等。
定义中间件
Gin中的中间件必须是一个gin.HandlerFunc类型。
注册中间件
可以对路由,或者路由组,添加一个或者多个中间件。
中间件注意事项
- gin默认中间件
gin.Default()默认使用了Logger和Recovery中间件,其中:
Logger中间件将日志写入gin.DefaultWriter,即使配置了GIN_MODE=release。 Recovery中间件会recover任何panic。如果有panic的话,会写入500响应码。 如果不想使用上面两个默认的中间件,可以使用gin.New()新建一个没有任何默认中间件的路由。
- gin中间件中使用goroutine
当在中间件或handler中启动新的goroutine时,不能使用原始的上下文(c *gin.Context),必须使用其只读副本(c.Copy())。
Ref
www.ruanyifeng.com/blog/2011/0… www.liwenzhou.com/posts/Go/gi…