beego是一个基于go语言开发的http框架,beego可用于开发web,api,后端服务等等应用,beego架构为mvc模型,支持RESTful api规范设计,支持热更新

安装

go get github.com/beego/beego

go get github.com/beego/bee

检查是否安装完成

bee version

beego项目可使用bee指令来创建和管理

创建第一个web应用

bee new hallo

beego是基于mvc模型的,因此其构建出来的项目文件也是标准mvc模型文件结构,其中main.go是入口文件

执行go mod tidy,生成go.sum

启动项目(bee run指令会自动编译部署)

bee run

访问http://127.0.0.1:8080/

其他常用beeg指令

创建api应用

bee api apitest

打包应用命令(将项目打包压缩)

bee pack

自动生成代码

bee generate


controller控制器

简单接收一下get请求的参数

controllers/default.go,在func (c *MainController) Get() 函数中修改

name := c.GetString("name")
c.Data["Website"] = name

访问http://127.0.0.1:8080/?name=hallo,views\index.tpl的模板中的{{.Website}}被设置为hallo

在controllers/default.go看到,其定义了一个MainController结构体,该结构体继承了beego.Controller的全部方法(其中方法包括Get,Post等等方法)

Model模型

在bee new中并没有Model实例演示,但是bee api有,而且controller控制器可完成一些简单逻辑,只有当逻辑需要复用时才抽象成Model模型

View视图

在controllers/default.go看到c.TplName = “index.tpl”,这个语句就是设置模板文件,该模板支持tpl和html文件,beego使用了golang默认的模板引擎

在views/index.tpl中可以看到这个

<div class="author">
    Official website:
    <a href="http://{{.Website}}">{{.Website}}</a> /
    Contact me:
    <a class="email" href="mailto:{{.Email}}">{{.Email}}</a>
</div>

在controller中,定义了数据,并且该数据赋值给Data,在模板文件中通过{{.Email}}来访问到数据


数据库交互

bee generate scaffold test -fields=“id:int64,name:string” -driver=mysql -conn=“root:root@tcp(127.0.0.1:3306)/test”

上面这个命令会自动生成代码,其中-fields参数为字段,-driver为引擎,-conn为数据库登录信息

如果没有打错指令,会提示是否创建mvc模型的文件,根据提示选择是否要创建

在models下的test.go文件,可以看到已经添加了管理数据库的函数


静态文件的引用

beego默认使用static目录作为静态文件的目录,在main.go文件中beego.Run()之前配置StaticDir["/static"] = “static”

如果有多个静态文件目录,可使用beego.SetStaticPath("/test", “test”)