Beego 初步

优质
小牛编辑
135浏览
2023-12-01

简介

beego是国内团队开源的golang开发框架,是一个关注度和使用量都比价高的项目。

Beego是一个成熟的MVC框架,它有着自己的日志库、ORM和web框架。你不需要再查找和安装第三方的库。Beego还有一个内置的工具bee,这个工具可以实时的监控代码的更改。

Beego可以大量的节省你的开发时间,尤其是项目初期可以帮你创建日志框架和程序架构。

beego 是一个快速开发 Go 应用的 HTTP 框架,他可以用来快速开发 API、Web 及后端服务等各种应用,是一个 RESTful 的框架,主要设计灵感来源于 tornado、sinatra 和 flask 这三个框架,但是结合了 Go 本身的一些特性(interface、struct 嵌入等)而设计的一个框架。

beego beego

快速启动 Quick Start

beego文档快速入门中给出一个很简单的例子。

安装

beego 包含一些示例应用程序以帮您学习并使用 beego 应用框架。

你需要安装或者升级 Beego 和 Bee 的开发工具:

$ go get -u github.com/astaxie/beego
$ go get -u github.com/beego/bee

为了能够直接使用bee命令,需要将$GOPATH/bin添加到$PATH变量中。

创建应用

创建一个名为hello的应用,可以选择web应用,或者api应用: $ bee new hello //创建一个web应用 $ bee api hello //创建一个api应用

执行结束后,会在当前目录下创建名为hello的目录:

    .
    |____hello
    | |____conf
    | | |____app.conf
    | |____controllers
    | | |____default.go
    | |____main.go
    | |____models
    | |____routers
    | | |____router.go
    | |____static
    | | |____css
    | | |____img
    | | |____js
    | | | |____reload.min.js
    | |____tests
    | | |____default_test.go
    | |____views
    | | |____index.tpl

编译运行

进入hello目录中,执行bee run,就会完成编译、运行:

$ cd hello/
$ bee run
______
| ___ \
| |_/ /  ___   ___
| ___ \ / _ \ / _ \
| |_/ /|  __/|  __/
\____/  \___| \___| v1.9.1
2017/10/30 14:33:05 INFO     ▶ 0001 Using 'hello' as 'appname'
2017/10/30 14:33:05 INFO     ▶ 0002 Initializing watcher...
2017/10/30 14:33:06 SUCCESS  ▶ 0003 Built Successfully!
2017/10/30 14:33:06 INFO     ▶ 0004 Restarting 'hello'...
2017/10/30 14:33:06 SUCCESS  ▶ 0005 './hello' is running...
2017/10/30 14:33:06 [I] [asm_amd64.s:2197] http server Running on http://:8080

打包发布

项目打包发布:

$ bee pack

代码生成

生成models:

bee generate model user -fields="name:string,age:int"

生成controller:

bee generate controller user

生成view:

bee generate view user

生成文档:

bee generate docs

自动生成

从数据库一键生成代码

bee generate appcode [-tables=""] [-driver=mysql] [-conn="root:@tcp(127.0.0.1:3306)/test"] [-level=3]
    generate appcode based on an existing database
    -tables: a list of table names separated by ',', default is empty, indicating all tables
    -driver: [mysql | postgres | sqlite], the default is mysql
    -conn:   the connection string used by the driver.
             default for mysql:    root:@tcp(127.0.0.1:3306)/test
             default for postgres: postgres://postgres:postgres@127.0.0.1:5432/postgres
    -level:  [1 | 2 | 3], 1 = models; 2 = models,controllers; 3 = models,controllers,router

例如为数据库中所有的表生成models、controllers、router:

bee generate appcode -driver=mysql -conn="root:@tcp(127.0.0.1:3306)/kube-loadbalance" -level=3

$ ls models/
backend.go      listener.go     object.go       resource.go     user.go
cluster.go      loadbalancer.go pool.go         template.go

$ ls controllers/
backend.go      listener.go     object.go       resource.go     user.go
cluster.go      loadbalancer.go pool.go         template.go
routers/routers.go中也自动生成了路由:
    func init() {
        ns := beego.NewNamespace("/v1",

            beego.NSNamespace("/backend",
                beego.NSInclude(
                    &controllers.BackendController{},
                ),
            ),

            beego.NSNamespace("/cluster",
                beego.NSInclude(
                    &controllers.ClusterController{},
                ),
            ),
    ...

生成controller

bee generate controller user

生成models

bee generate model user -fields="name:string,age:int"

生成view

bee generate view user

生成文档

自动创建swagge文件:

$ bee generate docs

启动后访问/swagger查看api:

    func main() {
        if beego.BConfig.RunMode == "dev" {
            beego.BConfig.WebConfig.DirectoryIndex = true
            beego.BConfig.WebConfig.StaticDir["/swagger"] = "swagger"
        }
        beego.Run()
    }

注意,如果是第一次运行,带上-downdoc=true:

bee run -downdoc=true