Golang开发之------ Beego框架
1.安装go(配置环境变量)
2.安装gorm(Goland编辑器举例):
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,direct
3.初始化项目(首先需要在工作目录新建bin文件夹,pkg文件夹,src文件夹):
go mod init
4.依赖关系处理,根据go.mod文件
go mod tidy
5.安装Beego框架:
go get -u github.com/astaxie/beego
6.安装Beego工具:
go get -u github.com/beego/bee
go get -u github.com/beego/bee/v2
go install github.com/beego/bee/v2@master
安装完之后,bee 可执行文件默认存放在 $GOPATH/bin 里面,所以需要把 $GOPATH/bin 添加到环境变量中,才可以进行下一步。
7.如果还运行不起来,mod命令(去除不需要的依赖):
go mod tidy
8.Beego框架命令(重要部分):
8.1 bee:查看框架还是否安装成功
8.2 bee new 项目名称:初始化项目
8.3 bee run:编辑运行项目
8.4 bee pack 目录用来发布应用的时候打包,会把项目打包成 zip 包,这样我们部署的时候直接把打包之后的项目上传,解压就可以部署了
8.5 bee bale 命令:这个命令目前仅限内部使用,具体实现方案未完善,主要用来压缩所有的静态文件变成一个变量申明文件,全部编译到二进制文件里面,用户发布的时候携带静态文件,包括 js、css、img 和 views。
最后在启动运行时进行非覆盖式的自解压
8.6 bee version 命令:这个命令是动态获取 bee、beego 和 Go 的版本,这样一旦用户出现错误,可以通过该命令来查看当前的版本
8.7 generate 命令:这个命令是用来自动化的生成代码的,包含了从数据库一键生成 model,还包含了 scaffold 的,通过这个命令,让大家开发代码不再慢
8.7.1 generate scaffold
8.7.2 generate model
8.7.3 generate controller
8.7.4 generate view
8.7.5 generate migration
8.7.6 generate docs
8.7.7 generate routers:是从原来beego中剥离出来的功能。在早期,beego的项目必须在启动 的时候才会触发生成路由文件
8.7.8 generate test:
8.7.9 generate appcode:
8.7.10 generate router:
8.8 migrate 命令:这个命令是应用的数据库迁移命令,主要是用来每次应用升级,降级的 SQL 管理
8.8.1:bee migrate
8.8.2:bee migrate rollback
8.8.3:bee migrate reset
8.8.4:bee migrate refresh
8.9 dockerize 命令:这个命令可以通过生成 Dockerfile 文件来实现 docker 化你的应用
9.Goweb 配置(全局配置:相当于Gin框架yaml文件):
9.1:设置参数:
mysql_user = "root"
mysql_password = "root"
mysql_host = "127.0.0.1:3306"
mysql_dbname = "xst"
9.2:获取参数
beego.AppConfig.String("mysql_user")
beego.AppConfig.String("mysql_password")
beego.AppConfig.String("mysql_host")
beego.AppConfig.String("mysql_dbname")
10.分组配置(全部配置:多环境可随意切换(设置为不同的运行级别:由runmode决定读取默认参数)):
runmode = "test1" 决定使用那个配置
[test1]
mysql_user = "root"
mysql_password = "root"
mysql_host = "127.0.0.1:3306"
mysql_dbname = "testdb1"
[test2]
mysql_user = "root"
mysql_password = "root"
mysql_host = "127.0.0.1:3306"
mysql_dbname = "testdb2"
[test3]
mysql_user = "root"
mysql_password = "root"
mysql_host = "127.0.0.1:3306"
mysql_dbname = "testdb3"
11.文件包含:关键词:include(引入服务关键词)
12.路由绑定
路由绑定方法1
beego.Get("/hello", func(ctx *context.Context) {
ctx.Output.Body([]byte("hi beego"))
})
路由绑定方法2
func Index(ctx *context.Context) {
ctx.Output.Body([]byte("hello beego"))
}
路由访问
beego.Post("/index", Index)
13.数据绑定
beego.Get (router, beego.FilterFunc)
beego.Post (router, beego.FilterFunc)
beego.Any (router, beego.FilterFunc)
“/”的所有HTTP请求方法都由MainController控制器的对应函数处理
beego.Router("/",&controllers.MainController{))
// “/user”的所有HTTP请求方法都由UserControl1er控制器的对应函数处理
// 例如:GET/user请求由Get()函数处理,P0ST/user请求由Post()函数处理
beego.Router("/user",&controllers.UserController{})
14.渲染视图
type UserController struct { beego.Controller } func(c *UserController) Get(){ fmt.Println("数据测试") c.TplName = "user.tpl" }
15.获取参数,返回int类型
获取整形
id, _ := c.GetInt("uid")
获取字符串类型
username := c.GetString("username", "none")
获取浮点型
balance, _ := c.GetFloat("balance", 0)
16.数据库操作:
package controllers
import (
"fmt"
beego "github.com/beego/beego/v2/server/web"
"github.com/beego/beego/v2/client/orm"
_ "github.com/go-sql-driver/mysql"
)
type UserController struct {
beego.Controller
}
//定义结构体
type Users struct {
Id uint
Username string
Sex string
Age uint8
}
//指定表名
func (u *Users) TableName() string {
return "users"
}
//初始化
func init() {
//注册数据库
orm.RegisterDataBase("default", "mysql", "root:root@tcp(127.0.0.1:3306)/test?charset=utf8")
//注册model
orm.RegisterModel(new(Users))
orm.Debug = true
}
//匿名函数
func(c *UserController) Get(){
//创建orm对象
o := orm.NewOrm()
//数据填充
user := new(Users)
user.Id = 3
user.Username = "mike"
user.Sex = "女"
user.Age = 18
//数据库操作
_, err := o.Insert(user)
fmt.Printf("erros",err)
c.TplName = "user.tpl"
}