![](https://img-blog.csdnimg.cn/20190927151117521.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
十二. gin 底层原理与基本使用
文章平均质量分 83
gin
苹果香蕉西红柿
这个作者很懒,什么都没留下…
展开
-
gin 十一. gin-contrib之cache 缓存
通过"github.com/gin-contrib/cache/persistence"获取缓存引擎实例相关。原创 2023-06-06 17:19:29 · 1007 阅读 · 0 评论 -
go 进阶 gin实战相关: 五. gin_scaffold 企业脚手架
实际就是拉取一个空的服务baes,测试启动一下,如果能够启动,在这个base上进行业务开发。原创 2023-05-09 09:17:46 · 856 阅读 · 1 评论 -
go 进阶 gin底层原理相关: 四. gin中间件底层原理
在ServeHTTP中会基于Pool获取到Context,通过Context处理请求。原创 2023-05-09 09:18:09 · 398 阅读 · 0 评论 -
go 进阶 gin底层原理相关: 三. gin接收请求匹配路由原理
【代码】go 进阶 gin实战相关: 三. gin接收请求匹配路由原理。原创 2023-05-09 09:17:10 · 527 阅读 · 0 评论 -
go 进阶 gin底层原理相关: 二. gin的路由注册原理
【代码】go 进阶 gin实战相关: 二. gin的路由注册原理。原创 2023-05-09 09:17:41 · 212 阅读 · 0 评论 -
go 进阶 gin底层原理相关: 一. gin框架基础与初始化启动原理
在代码逻辑层面 Engine 与 RouterGroup 关系我们执行gin.New/gin.Default函数初始化容器获取到Engine实例,Engine中存在一个RouterGroup属性,在初始化时会创建一个默认的RouterGroup,这个默认的RouterGropu中的Handlers存放的是当前全局中间件, basePath 就是存放这个分组的基础路由路径"/"(参考gin.New源码)原创 2023-05-09 09:17:04 · 531 阅读 · 0 评论 -
gin 十. gin-contrib之secure 支持https与安全设置
【代码】gin 十一. 支持https: github.com/unrolled/secure。原创 2023-05-09 09:15:37 · 594 阅读 · 0 评论 -
gin 九. 停机与重启
此时,在终端执行Ctrl+C命令给程序发送syscall.SIGINT停止信号,会等服务中请求执行完毕后再停止。如何后续修改了代码执行kill指令,在不影响当前未处理完请求的同时完成了程序代码的替换,实现了优雅重启。原创 2023-05-09 09:14:33 · 362 阅读 · 0 评论 -
gin 八.中间件基础
目录中间件基础解释全局中间件单个路由中间件gin.BasicAuthgin.Context 设置获取值中间件基础解释Go的net/http设计的⼀⼤特点就是特别容易构建中间件。gin也提供了类似的中间件。注意的点: 中间件只对注册过的路由函数起作⽤。对于分组路由,嵌套使⽤中间件,可以限定中间件的作⽤范围。中间件分为全局中间件,单个路由中间件和群组中间件在学习中间件以前先了解一个Gin的核心Context,发现gin的中间件与普通的 HandlerFunc 没有任何区别。type Contex原创 2023-05-09 09:15:02 · 202 阅读 · 0 评论 -
gin 七.路由组与接口异步处理的注意事项
目录解释,在请求后端接口时,某些情况下可能需要直接响应成功,后端异步去执行其他操作,在go时候通过groutine开启一个协程即可(接口默认是同步等待的)注意点,由于groutine是异步的,所以在groutine中不可修改Context的值,防止groutine外部使用时造成数据混乱,通常情况下是复制已发Context的副本拿来使用import ( "github.com/gin-gonic/gin" "log" "net/http" "time")func main() { r原创 2023-05-09 09:13:56 · 679 阅读 · 2 评论 -
gin 六.重定向路由重定向与请求转发
目录重定向路由重定向请求转发重定向代码示例import ( "github.com/gin-gonic/gin" "net/http")func main() { r := gin.Default() r.GET("/redirect", func(c *gin.Context) { //使用Context调用Redirect()⽀持内部和外部的重定向 //重定向到外部 c.Redirect(http.StatusMovedPermanently, "http://www原创 2023-05-08 09:33:25 · 1288 阅读 · 0 评论 -
gin 五.HTML模板渲染与自定义模板函数与模板继承与静态文件的响应
模板渲染与自定义模板函数HTML 模板渲染自定义模板引擎与模板函数模板继承静态文件响应HTML 模板渲染解释: Gin⽀持加载HTML模板, 然后根据模板参数进⾏配置并返回相应的数据在项目中新建一个用来存放模板的目录,添加一个模板 templates/index.tmpl<!DOCTYPE html><html lang="en"> <head> <meta charset="UTF-8"> <tit原创 2023-05-08 09:33:52 · 562 阅读 · 0 评论 -
gin 四.响应数据
响应数据既然请求可以使⽤不同的 content-type ,响应也如此。通常响应会有html,text,plain,json和xml等。前面做的文档中一直使用的是响应字符串c.String(http.StatusOK, "响应数据")响应json示例//1.响应结构体type Login struct { User string `form:"username" json:"user" uri:"user" xml:"user"` Password string `form:原创 2023-05-08 09:33:36 · 209 阅读 · 0 评论 -
gin 三.请求数据的映射
数据解析绑定基础解释ShouldBindWith 请求数据映射示例MustBindWith 方式gin.H{}基础解释解释: 例如后端获取调用方参数,通常会使用一个结构体,或一个变量来接收,调用方传递的数据会自动映射到该变量上,而不是通过request去手动获取,怎么映射目前Gin⽀持JSON、XML、YAML和标准表单值的绑定。就是根据Body数据类型,将数据赋值到指定的结构体变量中 (类似于序列化和反序列化)go提供了两套绑定方案Must bind(可以简单理解为当获取参数映射时如果出原创 2023-05-08 09:32:37 · 246 阅读 · 0 评论 -
gin 二.请求数据获取基础
gin中的路由一.路由基础兜底接口路由参数API 参数获取URL 传参获取表单参数文件上传路由组一.路由基础gin 框架中通过 httprouter库完成路由,编写GET,POST,等等请求接口func CreateRouter() *gin.Engine { //获取默认RouterRouter router := gin.Default() // 添加 Get 请求路由 router.GET("/hello", func(context *gin.Context) { conte原创 2023-05-08 09:32:39 · 964 阅读 · 0 评论 -
gin 一.创建gin_hello服务与启动
目录创建一个gin_hello服务设置下载代理地址简单模块化有单元测试模块化修改抽取RouterAPI单元测试服务器启动方式创建一个gin_hello服务创建服务(使用go Mod)创建main.go并导入gin包package mainimport ( "github.com/gin-gonic/gin" "net/http")func main() { //1.创建一个默认的路由器 router := gin.Default() //2.添加 Get 请求路由,又称为原创 2023-05-08 09:31:53 · 619 阅读 · 0 评论