这是我参与「第五届青训营 」笔记创作活动的第16天
因为我们的抖声使用了Gin+gorm,所以复习一下Gin的知识点
请求方式
HTTP请求及Handle
引入post请求
使用e.LoadHTMLGlob("./templates/*") 创建html页面,路径可以是设置成绝对路径或者相对路径,但是不能直接设置src为根目录,就可以开启访问此html页面
绑定表单
html中的表单记得是<form></form>而不是<from>
<form action="/register" method="post">
<input name="username"><br/>
<input name="password"><br/>
<input type="checkbox" name="hobby" value="GoLang">GoLang
<input type="checkbox" name="hobby" value="Java">Java
<input type="checkbox" name="hobby" value="C++">C++
<input type="submit">
</form>
复制代码
使用bootstrap和静态资源
首先使用e := gin.Default()使用函数e.Static("/assets【页面访问link的根路径】", "assets【实际路径】")加载静态资源
自定义中间件的使用
主要使用e.use()参数为自定义函数
package main
import(
"fmt"
"github.com/gin-gonic/gin"
)
func MyHandler(e *gin.Context){
fmt .Println("MyHandler 。 。。。")
}
func MyHandlerB() gin.HandlerFunc {
return func(ctx *gin.Context){
path := ctx.FullPath()
method := ctx.Request.Method
fmt.Println("MyHandlerB 。。。。",path,method)
}
}
func main() {
e := gin.Default()
e.Use (MyHandler, MyHandlerB())
e.Static("../assets","src/gin/02/assets")
e.StaticFile("/favicon.ico","src/gin/02/assets/favicon.ico")
e.GET("/index",index)
e.LoadHTMIGlob("src/gin/02/templates/*")
e.Run()
}
func index(c*gin.Context){
C.HTML(200,"index.html", nil)
}
复制代码
BasicAuth中间件路由组权限管理
Basic Authentication是一种HTTP访问控制方式,用于限制对网站资源的访问。这种方式不需要Cookie和Session,只需要客户端发起请求的时候,在头部Header中提交用户名和密码就可以。如果没有附加,会弹出一个对话框,要求输入用户名和密码。这种方式实施起来非常简单,适合路由器之类小型系统。但是它不提供信息加密措施,通常都是以明文或者base64编码传输。
在网络嗅探中,Basic Authentication信息非常有价值,因为此类信息往往和路由器之类设备相关,并且不存在解密的困扰。
e := gin.Default()
//3、分组管理
routGroup := e.Group("/admin", gin.BasicAuth(gin.Accounts{
//理论上是需要去数据库去查的
"shenz": "123", //用户名:密码
"mashibing": "123",
"lianp": "123",
"glang": "123",
}))
routGroup.GET("/secrept", MyHandlerA)
func MyHandlerA(c *gin.Context) {
user := c.MustGet(gin.AuthUserKey).(string) //得到对应的key值(用户名)
if secret, ok := adminUsers[user]; ok { //根据key值去查找对应的数据,并返回
c.JSON(http.StatusOK, gin.H{"user": user, "secret": secret})
} else {
c.JSON(http.StatusOK, gin.H{"user": user, "secret": "No"})
}
}
复制代码
session和cookie
Cookie是服务器往客户端写的一些数据,可以实现自动登录等功能
context.Cookie()
引入MySQL
go get -u github.com/go-sql-driver/mysql
集成gorm
此中间件不必手写sql语句
Gorm集成手册
go get -u github.com/jinzhu/gorm