安装gin框架
在golang命令行执行 go get -u github.com/gin-gonic/gin
使用方式如下:
首先gin.Default创建引擎
然后业务逻辑 engine.GET(“/url”,func(){})
启动服务端 engine.Run(“ip:端口”)
给浏览器返回JSON
在func中使用入参.JSON
gin.H是map[string]interface{} gin中的快捷方式,等价关系
获取浏览器给服务端的参数
取多个参数
获取form表单
获取 url参数
以下情况url匹配会冲突,有报错
参数绑定ShouldBind()参数里面是指针类型,并且获取的结构体字段要大写,以及添加Tag对应获取哪个字段
上传文件
FormFile()函数,里面是要上传的东西
重定向
访问/c,变成访问sogo, .Redirect(状态码,地址)
进入/a,跳转到/b, .Request.URL.Path=“/b”
Gin路由
任意访问方法
访问不存在的url,使用noroute
如果出现大量前缀相同的url,可以使用如下方法,分路由组
路由组支持嵌套
Gin 框架 中间件
多个函数都会用到的公共处理逻辑,如判断登录,权限验证,计算耗时等。
全局注册中间件,不需要每个函数都写m1
为路由组添加中间件
中间件注意事项,在gin框架中使用协程时,不要使用c,使用c.copy()
gin操作数据库,gorm框架
示例
orm语句
结构体与数据表的对应关系
使用orm会专注于开发,但会弱化sql能力
在内部简单项目可以使用orm,如果使用对性能要求较高场景,还是原生sql更为合适
安装gorm
go get -u github.com/jinzhu/gorm
实操:
func main() {
//连接数据库
db, err := gorm.Open("mysql", "root:root@(localhost:3306)/gin_orm?charset=utf8mb4&parseTime=True&loc=Local")
if err != nil {
fmt.Println("数据库错误", err)
panic(err)
}
db.AutoMigrate(&UserInfo{})
//创建插入的信息
//user1 := UserInfo{1, "袁顺", "男", "go"}
//db.Create(&user1)
var user2 UserInfo
//查询
db.First(&user2)
fmt.Printf("user2:%#v\n", user2)
//更改
db.Model(&user2).Update("hobby", "学习")
fmt.Println(user2)
//删除
db.Delete(&user2)
//关闭数据库
defer db.Close()
}
// 数据表
type UserInfo struct {
Id uint
Name string
Gender string
Hobby string
}
主要看上面的函数
gorm的主键
表明默认是结构体的负数,并且驼峰会转换为_,即小写
如果要更改表名,给结构体创建一个TableName方法
或者指定表名创建
gorm默认给列名字段分隔
给字段设置默认值
将零值,存入数据库
gorm查询
更新
字段增加
删除
以上是软删除,如果想彻底删除,
企业级项目结构
将不属于main包下的函数,拆分出去
Controller层
存放控制相关内容,所有的响应的web函数 可以存在这里
Dao层
数据库相关内容,放入该层
Models层,所有的模型,及模型的增删改查操作,都放在这里面
将controller中的方法进行拆分,controller中,不实现逻辑,只调用
路由层,各种请求的url,可以单独放一个文件下