开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 25 天,点击查看活动详情
【地震高岗,一派西山千古秀】
Gin介绍
Gin 是一个 Go (Golang) 编写的轻量级 http web 框架,运行速度非常快,如果你是性能和高效的追求者 Gin 最擅长的就是 Api 接口的高并发,如果项目的规模不大,业务相对简单,这个时候我们也推荐您使用。
Gin 的官网:gin-gonic.com/zh-cn/
Github 地址:github.com/gin-gonic/g…
安装gin
框架文档介绍:go get -u github.com/gin-gonic/gin
这时候如果遇到问题资源加载不了,解决方法是使用代理(这块有个 go env 的命令,可以查看当前配置),在cmd中运行
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.io,direct
//创建一个服务 ginServer := gin.Default()
//响应页面给前端
ginServer.GET("/index", func(context *gin.Context) {
//context.JSON()返回json数据
context.HTML(200, "index.html", gin.H{
"msg": "这是go后台传来的",
})
})
//服务器端口 ginServer.Run(":8082")
favicon
ginServer.Use(favicon.New("./1.png"))
Gin RestFul
//访问地址,处理我们的请求 Request Response
//接收这个请求有一个返回值,我们通过匿名函数func(){}来返回 context上下文接收请求或响应一些数据
ginServer.GET("/hello", func(context *gin.Context) {
context.JSON(200, gin.H{"msg": "hello,world"})
})
ginServer.POST("/user", func(context *gin.Context) {
context.JSON(200, gin.H{"msg": "hello,world"})
})
ginServer.PUT("/user", func(context *gin.Context) {
})
ginServer.DELETE("/user", func(context *gin.Context) {
})
Gin 中的Cookie
- HTTP 是无状态协议。简单地说,当你浏览了一个页面,然后转到同一个网站的另一个页 面,服务器无法认识到这是同一个浏览器在访问同一个网站。每一次的访问,都是没有任何 关系的。如果我们要实现多个页面之间共享数据的话我们就可以使用Cookie 或者Session 实 现 cookie 是存储于访问者计算机的浏览器中。可以让我们用同一个浏览器访问同一个域名 的时候共享数
- Cookie 能实现的功能
- 保持用户登录状态
- 保存用户浏览的历史记录
- 猜你喜欢,智能推荐
- 电商网站的加入购物车
- 设置和获取Cookie 前面我们已经使用过ctx.Set("username") 和 ctx.Get("username")来进行数据的保存和共享,但这个使用的只针对是单页面的数据共享,要想实现多页面的共享,就需要Cookie或者Session gin-gonic.com/zh-cn/docs/…
- 设置Cookie
c.SetCookie(name, value string, maxAge int, path, domain string, secure, httpOnly bool)其中:
- 第一个参数key
- 第二个参数value
- 第三个参数过期时间.如果只想设置Cookie 的保存路径而不想设置存活时间,可以在第三个参数中传递nil
- 第四个参数cookie 的路径
- 第五个参数cookie 的路径Domain 作用域本地调试配置成localhost , 正式上线配置成域名
- 第六个参数是secure ,当secure 值为true 时,cookie 在HTTP 中是无效,在HTTPS 中才有效
- 第七个参数httpOnly,是微软对COOKIE 做的扩展。如果在COOKIE 中设置了“httpOnly”属性,则通过程序(JS 脚本、applet 等)将无法读取到COOKIE 信息,防止XSS 攻击产生
- 获取Cookie
cookie, err := c.Cookie("name") - 删除Cookie:把第三个参数时间设置为-1
多个二级域名共享cookie
我们想的是用户在a.test.com 中设置Cookie 信息后在b.test.com 中获取刚才设置的cookie,也就是实现多个二级域名共享cookie, 这时候的话我们就可以这样设置cookie
c.SetCookie("usrename", "张三", 3600, "/", ".test.com", false, true)
Gin 中使用GORM 操作mysql 数据库
- GORM 简单介绍 GORM 是Golang 的一个orm 框架。简单说,ORM 就是通过实例对象的语法,完成关系型 数据库的操作的技术,是"对象-关系映射"(Object/Relational Mapping) 的缩写。使用ORM 框架可以让我们更方便的操作数据库。 GORM 官方支持的数据库类型有: MySQL, PostgreSQL, SQlite, SQL Server
- Gorm 特性 全功能ORM 关联(Has One,Has Many,Belongs To,Many To Many,多态,单表继承) Create,Save,Update,Delete,Find 中钩子方法 支持Preload、Joins 的预加载 事务,嵌套事务,Save Point,Rollback To Saved Point Context、预编译模式、DryRun 模式 批量插入,FindInBatches,Find/Create with Map,使用SQL 表达式、Context Valuer 进 行CRUD SQL 构建器,Upsert,数据库锁,Optimizer/Index/Comment Hint,命名参数,子查询 复合主键,索引,约束 Auto Migration 自定义Logger 灵活的可扩展插件API:Database Resolver(多数据库,读写分离)、Prometheus
- 官方文档:gorm.io/zh_CN/docs/…